aboutsummaryrefslogtreecommitdiffstats
path: root/mail/html-stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/html-stream.c')
-rw-r--r--mail/html-stream.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/mail/html-stream.c b/mail/html-stream.c
new file mode 100644
index 0000000000..250e98500a
--- /dev/null
+++ b/mail/html-stream.c
@@ -0,0 +1,107 @@
+/*
+ * html-stream.c: A CamelStream class that feeds data into a GtkHTML widget
+ *
+ * Author:
+ * Miguel de Icaza (miguel@helixcode.com)
+ *
+ * (C) 2000 Helix Code, Inc.
+ */
+#include <config.h>
+#include "html-stream.h"
+#include "e-util/e-util.h"
+
+#define PARENT_TYPE camel_stream_get_type ()
+
+/*
+ * CamelStream::read method
+ *
+ * Return 0 bytes read, as this is a write-only stream
+ */
+static gint
+html_stream_read (CamelStream *stream, gchar *buffer, gint n)
+{
+ return 0;
+}
+
+/*
+ * CamelStream::write method
+ *
+ * Writes @buffer into the HTML widget
+ */
+static gint
+html_stream_write (CamelStream *stream, const gchar *buffer, gint n)
+{
+ HTMLStream *html_stream = HTML_STREAM (stream);
+
+ gtk_html_write (html_stream->gtk_html, html_stream->gtk_html_stream, buffer, n);
+}
+
+/*
+ * CamelStream::available method
+ *
+ * Return 0, as this is only a write-stream
+ */
+static gint
+html_stream_available (CamelStream *stream)
+{
+ return 0;
+}
+
+/*
+ * CamelStream::eos method.
+ *
+ * We just return TRUE, as this is not a read-stream
+ */
+static
+html_stream_eos (CamelStream *stream)
+{
+ return TRUE;
+}
+
+static void
+html_stream_close (CamelStream *stream)
+{
+ HTMLStream *html_stream = HTML_STREAM (stream);
+
+ gtk_html_end (html_stream->gtk_html);
+}
+
+static void
+html_stream_class_init (GtkObjectClass *object_class)
+{
+ HTMLStreamClass *stream_class = (HTMLStreamClass *) object_class;
+
+ html_stream_parent_class = gtk_type_class (PARENT_TYPE);
+
+ object_class->destory = html_stream_destroy;
+
+ stream_class->read = html_stream_read;
+ stream_class->write = html_stream_write;
+ stream_class->available = html_stream_available;
+ stream_class->eos = html_stream_eos;
+ stream_class->close = html_stream_close;
+}
+
+CamelStream *
+html_stream_new (GtkHTML *html)
+{
+ HTMLStream *html_stream;
+
+ g_return_val_if_fail (html != NULL, NULL);
+ g_return_val_if_fail (GTK_IS_HTML (html), NULL);
+
+ html_stream = gtk_type_new (html_stream_get_type ());
+
+ gtk_object_ref (GTK_OBJECT (html));
+
+ html_stream->gtk_html_stream = gtk_html_begin (html, NULL);
+ gtk_html_parse (html);
+
+ html_stream->gtk_html = html;
+
+ return CAMEL_STREAM (html_stream);
+}
+
+E_MAKE_TYPE (html_stream, "HTMLStream", HTMLStream, html_stream_class_init, NULL, PARENT_TYPE);
+
+