pidgin/gtklog.c

changeset 21352
e10c4ea18f7c
parent 21175
c6d76b49c206
parent 21342
6d1d2ebd9277
child 22214
e8a9916cb99e
equal deleted inserted replaced
21175:c6d76b49c206 21352:e10c4ea18f7c
521 521
522 logs = logs->next; 522 logs = logs->next;
523 } 523 }
524 } 524 }
525 525
526 static PidginLogViewer *display_log_viewer(GtkWindow *parent, struct log_viewer_hash_t *ht, GList *logs, 526 static PidginLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *logs,
527 const char *title, GtkWidget *icon, int log_size) 527 const char *title, GtkWidget *icon, int log_size)
528 { 528 {
529 PidginLogViewer *lv; 529 PidginLogViewer *lv;
530 GtkWidget *title_box; 530 GtkWidget *title_box;
531 char *text; 531 char *text;
567 567
568 if (ht != NULL) 568 if (ht != NULL)
569 g_hash_table_insert(log_viewers, ht, lv); 569 g_hash_table_insert(log_viewers, ht, lv);
570 570
571 /* Window ***********/ 571 /* Window ***********/
572 lv->window = gtk_dialog_new_with_buttons(title, parent, 0, 572 lv->window = gtk_dialog_new_with_buttons(title, NULL, 0,
573 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); 573 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
574 #ifdef _WIN32 574 #ifdef _WIN32
575 /* Steal the "HELP" response and use it to trigger browsing to the logs folder */ 575 /* Steal the "HELP" response and use it to trigger browsing to the logs folder */
576 gtk_dialog_add_button(GTK_DIALOG(lv->window), _("_Browse logs folder"), GTK_RESPONSE_HELP); 576 gtk_dialog_add_button(GTK_DIALOG(lv->window), _("_Browse logs folder"), GTK_RESPONSE_HELP);
577 #endif 577 #endif
674 674
675 return lv; 675 return lv;
676 } 676 }
677 677
678 void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) { 678 void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) {
679 pidgin_log_show_with_parent(NULL, type, screenname, account);
680 }
681
682 void pidgin_log_show_with_parent(GtkWindow *parent, PurpleLogType type, const char *screenname, PurpleAccount *account) {
683 struct log_viewer_hash_t *ht; 679 struct log_viewer_hash_t *ht;
684 PidginLogViewer *lv = NULL; 680 PidginLogViewer *lv = NULL;
685 const char *name = screenname; 681 const char *name = screenname;
686 char *title; 682 char *title;
683 GdkPixbuf *prpl_icon;
687 684
688 g_return_if_fail(account != NULL); 685 g_return_if_fail(account != NULL);
689 g_return_if_fail(screenname != NULL); 686 g_return_if_fail(screenname != NULL);
690 687
691 ht = g_new0(struct log_viewer_hash_t, 1); 688 ht = g_new0(struct log_viewer_hash_t, 1);
719 name = purple_buddy_get_contact_alias(buddy); 716 name = purple_buddy_get_contact_alias(buddy);
720 717
721 title = g_strdup_printf(_("Conversations with %s"), name); 718 title = g_strdup_printf(_("Conversations with %s"), name);
722 } 719 }
723 720
724 display_log_viewer(parent, ht, purple_log_get_logs(type, screenname, account), 721 prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
725 title, gtk_image_new_from_pixbuf(pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM)), 722
723 display_log_viewer(ht, purple_log_get_logs(type, screenname, account),
724 title, gtk_image_new_from_pixbuf(prpl_icon),
726 purple_log_get_total_size(type, screenname, account)); 725 purple_log_get_total_size(type, screenname, account));
726
727 if (prpl_icon)
728 g_object_unref(prpl_icon);
727 g_free(title); 729 g_free(title);
728 } 730 }
729 731
730 void pidgin_log_show_contact(PurpleContact *contact) { 732 void pidgin_log_show_contact(PurpleContact *contact) {
731 pidgin_log_show_contact_with_parent(NULL, contact);
732 }
733
734 void pidgin_log_show_contact_with_parent(GtkWindow *parent, PurpleContact *contact) {
735 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1); 733 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1);
736 PurpleBlistNode *child; 734 PurpleBlistNode *child;
737 PidginLogViewer *lv = NULL; 735 PidginLogViewer *lv = NULL;
738 GList *logs = NULL; 736 GList *logs = NULL;
739 GdkPixbuf *pixbuf; 737 GdkPixbuf *pixbuf;
783 if (name == NULL) 781 if (name == NULL)
784 name = ""; 782 name = "";
785 } 783 }
786 784
787 title = g_strdup_printf(_("Conversations with %s"), name); 785 title = g_strdup_printf(_("Conversations with %s"), name);
788 display_log_viewer(parent, ht, logs, title, image, total_log_size); 786 display_log_viewer(ht, logs, title, image, total_log_size);
789 g_free(title); 787 g_free(title);
790 } 788 }
791 789
792 void pidgin_syslog_show(void) 790 void pidgin_syslog_show()
793 {
794 pidgin_syslog_show_with_parent(NULL);
795 }
796
797 void pidgin_syslog_show_with_parent(GtkWindow *parent)
798 { 791 {
799 GList *accounts = NULL; 792 GList *accounts = NULL;
800 GList *logs = NULL; 793 GList *logs = NULL;
801 794
802 if (syslog_viewer != NULL) { 795 if (syslog_viewer != NULL) {
812 805
813 logs = g_list_concat(purple_log_get_system_logs(account), logs); 806 logs = g_list_concat(purple_log_get_system_logs(account), logs);
814 } 807 }
815 logs = g_list_sort(logs, purple_log_compare); 808 logs = g_list_sort(logs, purple_log_compare);
816 809
817 syslog_viewer = display_log_viewer(parent, NULL, logs, _("System Log"), NULL, 0); 810 syslog_viewer = display_log_viewer(NULL, logs, _("System Log"), NULL, 0);
818 } 811 }
819 812
820 /**************************************************************************** 813 /****************************************************************************
821 * GTK+ LOG SUBSYSTEM ******************************************************* 814 * GTK+ LOG SUBSYSTEM *******************************************************
822 ****************************************************************************/ 815 ****************************************************************************/

mercurial