static void
on_html_http_url_requested_disconnect (C2Request *request, C2NetObjectByte *byte, gboolean success, C2Pthread2 *data)
{
	GtkHTMLStream *stream = data->v2;

	gtk_html_stream_write (stream, request->source, request->got_size);
	gtk_html_stream_close (stream, GTK_HTML_STREAM_OK);
}
static gboolean
on_url_requested (GtkWidget *widget, const gchar *uri, GtkHTMLStream *stream, TnyMimePartView *self)
{
	gboolean result;
	TnyStream *tny_stream;

	tny_stream = TNY_STREAM (tny_gtk_html_stream_new (stream));
	g_signal_emit_by_name (self, "fetch-url", uri, tny_stream, &result);
	gtk_html_stream_close (stream, result?GTK_HTML_STREAM_OK:GTK_HTML_STREAM_ERROR);
	g_object_unref (tny_stream);
	return result;
}
static void
stream_log_close (GtkHTMLStream *stream,
	       GtkHTMLStreamStatus status,
	       gpointer user_data)
{
	GtkHTMLLog *log = user_data;

	fclose (log->file);
	gtk_html_stream_close (log->stream, status);

	g_free (log);
}
static void url_requested_cb(GtkHTML *html, const char *url, GtkHTMLStream *stream)
{
	Emote *e;

	g_debug("url_requested_cb: url=%s", url);

	e = emote_get_by_url(url);
	g_assert(e != NULL);
	
	gtk_html_write(html, stream, (gchar *)e->data, e->size);
	//gtk_html_flush(html);
	
	/* Zamykamy ten stream -- jest tworzony tylko dla obrazka */
	gtk_html_stream_close(stream, GTK_HTML_STREAM_OK);
}
Beispiel #5
0
static void
view_source_dialog(GtkhtmlEditor *editor,
		   const gchar *title,
		   const gchar *content_type, gboolean show_output)
{
	GtkWidget *dialog;
	GtkWidget *content;
	GtkWidget *scrolled_window;
	GString *string;

	dialog = gtk_dialog_new_with_buttons(title, GTK_WINDOW(editor),
					     GTK_DIALOG_DESTROY_WITH_PARENT,
#ifdef HAVE_GTK_310
					     "_Close", GTK_RESPONSE_CLOSE,
#else
					     GTK_STOCK_CLOSE,
					     GTK_RESPONSE_CLOSE,
#endif
					     NULL);

	scrolled_window = gtk_scrolled_window_new(NULL, NULL);
	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
				       GTK_POLICY_AUTOMATIC,
				       GTK_POLICY_AUTOMATIC);
	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled_window),
					    GTK_SHADOW_IN);
	gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), scrolled_window, TRUE,
			   TRUE, 0);

	gtk_container_set_border_width(GTK_CONTAINER(dialog), 6);
	gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 6);
	gtk_window_set_default_size(GTK_WINDOW(dialog), 400, 300);

	string = g_string_sized_new(4096);

	gtk_html_export(gtkhtml_editor_get_html(editor),
			content_type, (GtkHTMLSaveReceiverFn)
			view_source_dialog_receiver,
			string);

	if (show_output) {
		GtkHTMLStream *stream;

		content = gtk_html_new();
		stream = gtk_html_begin(GTK_HTML(content));
		gtk_html_stream_write(stream, string->str, string->len);
		gtk_html_stream_close(stream, GTK_HTML_STREAM_OK);
	} else {
		GtkTextBuffer *buffer;

		content = gtk_text_view_new();
		buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(content));
		gtk_text_buffer_set_text(buffer, string->str, string->len);
		gtk_text_view_set_editable(GTK_TEXT_VIEW(content), FALSE);
	}

	g_string_free(string, TRUE);

	gtk_container_add(GTK_CONTAINER(scrolled_window), content);
	gtk_widget_show_all(scrolled_window);

	gtk_dialog_run(GTK_DIALOG(dialog));
	gtk_widget_destroy(dialog);
}