|
Packit |
1470ea |
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#include <config.h>
|
|
Packit |
1470ea |
#include <gtk/gtk.h>
|
|
Packit |
1470ea |
#include <webkit/webkit.h>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#include <glib/gi18n.h>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
static const guchar CSS[] =
|
|
Packit |
1470ea |
"body { margin: 0; padding: 0; }\n"
|
|
Packit |
1470ea |
"div { "
|
|
Packit |
1470ea |
" -webkit-border-radius: 2px;"
|
|
Packit |
1470ea |
" background: -webkit-gradient(linear, 0% 100%, 0% 0%,"
|
|
Packit |
1470ea |
" from(#f1f1f1), to(white));"
|
|
Packit |
1470ea |
" border: solid 1px #c6c6c6;"
|
|
Packit |
1470ea |
" -webkit-box-shadow: 0px 0px 2px #c6c6c6;"
|
|
Packit |
1470ea |
" margin: 12px; padding: 6px;"
|
|
Packit |
1470ea |
"}";
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
static void
|
|
Packit |
1470ea |
entry_activate_cb (GtkEntry *entry, WebKitWebView *view)
|
|
Packit |
1470ea |
{
|
|
Packit |
1470ea |
WebKitDOMDocument *document;
|
|
Packit |
1470ea |
WebKitDOMElement *body, *div;
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
document = webkit_web_view_get_dom_document (view);
|
|
Packit |
1470ea |
body = webkit_dom_document_query_selector (document,
|
|
Packit |
1470ea |
"body",
|
|
Packit |
1470ea |
NULL);
|
|
Packit |
1470ea |
div = webkit_dom_document_create_element (document,
|
|
Packit |
1470ea |
"div",
|
|
Packit |
1470ea |
NULL);
|
|
Packit |
1470ea |
webkit_dom_node_set_text_content (WEBKIT_DOM_NODE (div),
|
|
Packit |
1470ea |
gtk_entry_get_text (entry),
|
|
Packit |
1470ea |
NULL);
|
|
Packit |
1470ea |
webkit_dom_node_append_child (WEBKIT_DOM_NODE (body),
|
|
Packit |
1470ea |
WEBKIT_DOM_NODE (div),
|
|
Packit |
1470ea |
NULL);
|
|
Packit |
1470ea |
gtk_entry_set_text (entry, "");
|
|
Packit |
1470ea |
}
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
static GtkWidget*
|
|
Packit |
1470ea |
create_window (void)
|
|
Packit |
1470ea |
{
|
|
Packit |
1470ea |
GtkWidget *window, *box, *scroll, *view, *entry;
|
|
Packit |
1470ea |
gchar *tmp, *css;
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
Packit |
1470ea |
gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
|
|
Packit |
1470ea |
gtk_window_set_title (GTK_WINDOW (window), "Message Board");
|
|
Packit |
1470ea |
g_signal_connect (window, "delete-event",
|
|
Packit |
1470ea |
G_CALLBACK (gtk_main_quit), NULL);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
|
|
Packit |
1470ea |
gtk_container_set_border_width (GTK_CONTAINER (box), 6);
|
|
Packit |
1470ea |
gtk_container_add (GTK_CONTAINER (window), box);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
entry = gtk_entry_new ();
|
|
Packit |
1470ea |
gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
scroll = gtk_scrolled_window_new (NULL, NULL);
|
|
Packit |
1470ea |
g_object_set (scroll, "shadow-type", GTK_SHADOW_IN, NULL);
|
|
Packit |
1470ea |
gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
view = webkit_web_view_new ();
|
|
Packit |
1470ea |
gtk_container_add (GTK_CONTAINER (scroll), view);
|
|
Packit |
1470ea |
webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),
|
|
Packit |
1470ea |
"<html><body></body></html>",
|
|
Packit |
1470ea |
"text/html",
|
|
Packit |
1470ea |
"UTF-8",
|
|
Packit |
1470ea |
NULL);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
tmp = g_base64_encode (CSS, strlen((gchar *) CSS));
|
|
Packit |
1470ea |
css = g_strconcat ("data:text/css;charset=utf-8;base64,",
|
|
Packit |
1470ea |
tmp, NULL);
|
|
Packit |
1470ea |
g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),
|
|
Packit |
1470ea |
"user-stylesheet-uri", css, NULL);
|
|
Packit |
1470ea |
g_free (css);
|
|
Packit |
1470ea |
g_free (tmp);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
g_signal_connect (entry, "activate",
|
|
Packit |
1470ea |
G_CALLBACK (entry_activate_cb), view);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
gtk_widget_show_all (GTK_WIDGET (box));
|
|
Packit |
1470ea |
return window;
|
|
Packit |
1470ea |
}
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
int
|
|
Packit |
1470ea |
main (int argc, char *argv[])
|
|
Packit |
1470ea |
{
|
|
Packit |
1470ea |
GtkWidget *window;
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
#ifdef ENABLE_NLS
|
|
Packit |
1470ea |
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
|
|
Packit |
1470ea |
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
|
Packit |
1470ea |
textdomain (GETTEXT_PACKAGE);
|
|
Packit |
1470ea |
#endif
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
gtk_init (&argc, &argv);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
window = create_window ();
|
|
Packit |
1470ea |
gtk_widget_show (window);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
gtk_main ();
|
|
Packit |
1470ea |
return 0;
|
|
Packit |
1470ea |
}
|