Something like this should do it fast. Just put the info info widget in GtkScrolledWindow, for example.
#include <gtkhtml/gtkhtml.h> #include <gtkhtml/gtkhtml-stream.h> #define WRITE_HTML(html, args...) \ { gchar *ph; \ ph=g_markup_printf_escaped(html, ##args); \ gtk_html_write(GTK_HTML(info), s, ph, strlen(ph)); \ g_free(ph); } { GtkWidget *info; GtkHTMLStream *s; info=gtk_html_new(); gtk_html_set_editable(GTK_HTML(info), FALSE); gtk_html_allow_selection(GTK_HTML(info), TRUE); /* Optional, connect signals for link clicks, url load requests, etc */ #if 0 g_signal_connect(G_OBJECT(info), "link_clicked", G_CALLBACK(info_url_clicked_cb), NULL); g_signal_connect(G_OBJECT(info), "url_requested", G_CALLBACK(info_url_requested_cb), NULL); g_signal_connect(G_OBJECT(info), "title_changed", G_CALLBACK(info_title_cb), NULL); #endif s=gtk_html_begin(GTK_HTML(info)); WRITE_HTML("<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" \ "<head><title>Testing</title></head><body><h1>GtkHTML</h3><p>Example</p>"); WRITE_HTML("<p>Postal Code: %s</p>", some_random_data); WRITE_HTML("</body></html>"); gtk_html_end(GTK_HTML(info), s, GTK_HTML_STREAM_OK); }
source share