#include
/* clipped from my threaded network code, called by http_get_image */
if ((id = g_async_queue_try_pop (jc->jn->image_queue)))
{
if (id->image->data)
html_stream_write (id->stream, id->image->data, id->image->len);
g_free (id->image->data);
g_free (id->url);
g_free (id);
}
/* end clip */
void
url_requested (HtmlDocument *doc, const gchar *uri, HtmlStream *stream, gpointer data)
{
JadeClient *jc = (JadeClient *) data;
http_get_image (jc, uri, stream);
return;
}
void
dialog_build_preview (JadeClient *jc, JadeItem *ji, const gchar *html)
{
GtkWidget *view;
GtkWidget *scrolled_window;
HtmlDocument *doc;
static GtkWidget *dialog = NULL;
if (dialog)
{
gtk_window_present (GTK_WINDOW (dialog));
return;
}
dialog = gtk_dialog_new_with_buttons (
"Jade - Preview Item",
GTK_WINDOW (util_window_get (jc)),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_CLOSE, GTK_RESPONSE_REJECT,
NULL);
gtk_widget_set_size_request (dialog, 620, 440);
doc = html_document_new ();
g_signal_connect (G_OBJECT (doc), "request_url",
G_CALLBACK (url_requested), jc);
html_document_open_stream (doc, "text/html");
html_document_write_stream (doc, html, strlen (html));
html_document_close_stream (doc);
view = html_view_new ();
html_view_set_document (HTML_VIEW (view), doc);
html_view_set_magnification (HTML_VIEW (view), 1.0);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
gtk_container_add (GTK_CONTAINER (scrolled_window), view);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scrolled_window, TRUE, TRUE, 3);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (preview_item_response), jc);
g_signal_connect (G_OBJECT (dialog), "destroy",
G_CALLBACK (gtk_widget_destroyed), &dialog);
gtk_widget_show_all (dialog);
return;
}