1 /* modest-tny-stream-gtkhtml.c */
3 /* insert (c)/licensing information) */
5 #include "modest-tny-stream-gtkhtml.h"
6 #include <gtkhtml/gtkhtml-stream.h>
7 #include <gtkhtml/gtkhtml-search.h>
9 /* 'private'/'protected' functions */
10 static void modest_tny_stream_gtkhtml_class_init (ModestTnyStreamGtkhtmlClass *klass);
11 static void modest_tny_stream_gtkhtml_init (ModestTnyStreamGtkhtml *obj);
12 static void modest_tny_stream_gtkhtml_finalize (GObject *obj);
14 static void modest_tny_stream_gtkhml_iface_init (gpointer g_iface, gpointer iface_data);
23 typedef struct _ModestTnyStreamGtkhtmlPrivate ModestTnyStreamGtkhtmlPrivate;
24 struct _ModestTnyStreamGtkhtmlPrivate {
26 GtkHTMLStream *stream;
28 #define MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
29 MODEST_TYPE_TNY_STREAM_GTKHTML, \
30 ModestTnyStreamGtkhtmlPrivate))
32 static GObjectClass *parent_class = NULL;
34 /* uncomment the following if you have defined any signals */
35 /* static guint signals[LAST_SIGNAL] = {0}; */
38 modest_tny_stream_gtkhtml_get_type (void)
40 static GType my_type = 0;
42 static const GTypeInfo my_info = {
43 sizeof(ModestTnyStreamGtkhtmlClass),
45 NULL, /* base finalize */
46 (GClassInitFunc) modest_tny_stream_gtkhtml_class_init,
47 NULL, /* class finalize */
48 NULL, /* class data */
49 sizeof(ModestTnyStreamGtkhtml),
51 (GInstanceInitFunc) modest_tny_stream_gtkhtml_init,
54 static const GInterfaceInfo iface_info = {
55 (GInterfaceInitFunc) modest_tny_stream_gtkhml_iface_init,
56 NULL, /* interface_finalize */
57 NULL /* interface_data */
60 my_type = g_type_register_static (G_TYPE_OBJECT,
61 "ModestTnyStreamGtkhtml",
64 g_type_add_interface_static (my_type, TNY_TYPE_STREAM_IFACE,
72 modest_tny_stream_gtkhtml_class_init (ModestTnyStreamGtkhtmlClass *klass)
74 GObjectClass *gobject_class;
75 gobject_class = (GObjectClass*) klass;
77 parent_class = g_type_class_peek_parent (klass);
78 gobject_class->finalize = modest_tny_stream_gtkhtml_finalize;
80 g_type_class_add_private (gobject_class, sizeof(ModestTnyStreamGtkhtmlPrivate));
84 modest_tny_stream_gtkhtml_init (ModestTnyStreamGtkhtml *obj)
86 ModestTnyStreamGtkhtmlPrivate *priv;
87 priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(obj);
94 modest_tny_stream_gtkhtml_finalize (GObject *obj)
96 ModestTnyStreamGtkhtmlPrivate *priv;
98 priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(obj);
104 modest_tny_stream_gtkhtml_new (GtkHTML *gtkhtml)
107 ModestTnyStreamGtkhtmlPrivate *priv;
109 g_return_val_if_fail (gtkhtml, NULL);
111 obj = G_OBJECT(g_object_new(MODEST_TYPE_TNY_STREAM_GTKHTML, NULL));
112 priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(obj);
114 priv->gtkhtml = gtkhtml;
119 /* the rest are interface functions */
123 gtkhtml_read (TnyStreamIface *self, char *buffer, size_t n)
125 g_warning (__FUNCTION__);
126 return -1; /* we cannot read */
131 gtkhtml_write (TnyStreamIface *self, const char *buffer, size_t n)
133 ModestTnyStreamGtkhtmlPrivate *priv;
135 g_return_val_if_fail (self, 0);
137 priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(self);
139 priv->stream = gtk_html_begin (GTK_HTML(priv->gtkhtml));
141 gtk_html_stream_write (priv->stream, buffer, n);
148 gtkhtml_flush (TnyStreamIface *self)
150 ModestTnyStreamGtkhtmlPrivate *priv;
151 g_return_val_if_fail (self, 0);
152 priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(self);
154 gtk_html_flush (GTK_HTML(priv->gtkhtml));
160 gtkhtml_close (TnyStreamIface *self)
162 ModestTnyStreamGtkhtmlPrivate *priv;
163 g_return_val_if_fail (self, 0);
164 priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(self);
166 gtk_html_stream_close (priv->stream, GTK_HTML_STREAM_OK);
174 gtkhtml_eos (TnyStreamIface *self)
176 g_warning (__FUNCTION__);
183 gtkhtml_reset (TnyStreamIface *self)
185 ModestTnyStreamGtkhtmlPrivate *priv;
186 g_return_val_if_fail (self, 0);
187 priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(self);
190 gtk_html_end (priv->gtkhtml, priv->stream, GTK_HTML_STREAM_OK);
199 gtkhtml_write_to_stream (TnyStreamIface *self, TnyStreamIface *output)
201 g_warning (__FUNCTION__);
207 modest_tny_stream_gtkhml_iface_init (gpointer g_iface, gpointer iface_data)
209 TnyStreamIfaceClass *klass;
211 g_return_if_fail (g_iface);
213 klass = (TnyStreamIfaceClass *)g_iface;
215 klass->read_func = gtkhtml_read;
216 klass->write_func = gtkhtml_write;
217 klass->flush_func = gtkhtml_flush;
218 klass->close_func = gtkhtml_close;
219 klass->eos_func = gtkhtml_eos;
220 klass->reset_func = gtkhtml_reset;
221 klass->write_to_stream_func = gtkhtml_write_to_stream;