static void messageview_show_cb(GObject *obj, gpointer msgview, MsgInfo *msginfo, gboolean all_headers) { MessageView *messageview = NULL; MimeInfo *mimeinfo, *partial; FILE *msg_file, *input = NULL; gchar *html_buf = NULL; size_t n_size; #if defined(USE_WEBKITGTK) WebKitWebSettings *settings = NULL; #elif defined(USE_GTKHTML) #else #error "Not Implemented" #endif SYLPF_START_FUNC; g_return_if_fail(msgview != NULL); messageview = (MessageView*)msgview; g_return_if_fail(messageview != NULL); SYLPF_OPTION.is_show_attach_tab = SYLPF_GET_RC_SHOW_ATTACH_TAB; if (SYLPF_OPTION.is_show_attach_tab == 0) { gtk_notebook_set_current_page(GTK_NOTEBOOK(messageview->notebook), 0); SYLPF_RETURN; } if (SYLPF_OPTION.html_view == NULL) { #if defined(USE_WEBKITGTK) SYLPF_OPTION.html_view = (WebKitWebView*)create_htmlview(GTK_NOTEBOOK(messageview->notebook)); #elif defined(USE_GTKHTML) SYLPF_OPTION.html_view = create_htmlview(GTK_NOTEBOOK(messageview->notebook)); #endif } mimeinfo = procmime_scan_message(msginfo); msg_file = procmsg_open_message(msginfo); partial = mimeinfo; while (partial && partial->mime_type != MIME_TEXT_HTML) { partial = procmime_mimeinfo_next(partial); } if (partial && partial->mime_type == MIME_TEXT_HTML) { partial->mime_type = MIME_TEXT; input = procmime_get_text_content(partial, msg_file, NULL); html_buf = calloc(partial->size+1, 1); n_size = fread(html_buf, partial->size, 1, input); #if defined(USE_WEBKITGTK) settings = webkit_web_view_get_settings(SYLPF_OPTION.html_view); g_object_set(G_OBJECT(settings), ENABLE_IMAGES, SYLPF_OPTION.image_flag, NULL); g_object_set(G_OBJECT(settings), ENABLE_SCRIPTS, SYLPF_OPTION.script_flag, NULL); g_object_set(G_OBJECT(settings), ENABLE_PRIVATE_BROWSING, SYLPF_OPTION.private_flag, NULL); g_object_set(G_OBJECT(settings), DEFAULT_FONT_SIZE, SYLPF_OPTION.font_size, NULL); webkit_web_view_set_settings(SYLPF_OPTION.html_view, settings); webkit_web_view_load_string(SYLPF_OPTION.html_view, html_buf, NULL, NULL, ""); #elif defined(USE_GTKHTML) gtk_html_load_from_string(GTK_HTML(SYLPF_OPTION.html_view), html_buf, -1); #endif if (SYLPF_OPTION.switch_tab_flag != FALSE) { gtk_notebook_set_current_page(GTK_NOTEBOOK(messageview->notebook), 2); } fclose(input); free(html_buf); } else { gtk_notebook_set_current_page(GTK_NOTEBOOK(messageview->notebook), 0); } SYLPF_END_FUNC; }
void update_html_view() { gdk_threads_enter(); if (strlen(result_content) > 0) gtk_html_load_from_string(gtk_html, result_content, -1); gdk_threads_leave(); }