[kazehakase-svn] [3208] * module/embed/gtk-webcore/kz-webkit-gtk.[cpp|h]: New files for new

Back to archive index

svnno****@sourc***** svnno****@sourc*****
Wed Apr 25 12:45:58 JST 2007


Revision: 3208
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=kazehakase&view=rev&rev=3208
Author:   ikezoe
Date:     2007-04-25 12:45:57 +0900 (Wed, 25 Apr 2007)

Log Message:
-----------
* module/embed/gtk-webcore/kz-webkit-gtk.[cpp|h]: New files for new
GTK+ WebCore.

Modified Paths:
--------------
    kazehakase/trunk/ChangeLog

Added Paths:
-----------
    kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.cpp
    kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.h

Modified: kazehakase/trunk/ChangeLog
===================================================================
--- kazehakase/trunk/ChangeLog	2007-04-20 12:38:40 UTC (rev 3207)
+++ kazehakase/trunk/ChangeLog	2007-04-25 03:45:57 UTC (rev 3208)
@@ -1,3 +1,8 @@
+2007-04-25  Hiroyuki Ikezoe  <poinc****@ikezo*****>
+
+	* module/embed/gtk-webcore/kz-webkit-gtk.[cpp|h]: New files for new
+	GTK+ WebCore.
+
 2007-04-20  Hiroyuki Ikezoe  <poinc****@ikezo*****>
 
 	* module/embed/gtk-webcore/kz-gtk-webcore.cpp: Use WebiMouseDelegation

Added: kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.cpp
===================================================================
--- kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.cpp	2007-04-20 12:38:40 UTC (rev 3207)
+++ kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.cpp	2007-04-25 03:45:57 UTC (rev 3208)
@@ -0,0 +1,1347 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ *  Copyright (C) 2007 Hiroyuki Ikezoe
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *  $Id: kz-gtk-webcore.cpp 3207 2007-04-20 12:38:40Z ikezoe $
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include <glib/gi18n.h>
+#include <math.h>
+#include <webkit-gtk/webkit-ui-delegate.h>
+#include <webi-types.h>
+
+#include "kazehakase.h"
+#include "kz-gtk-webcore.h"
+#include "kz-embed-prefs.h"
+#include "kz-embed.h"
+#include "kz-prompt-dialog.h"
+#include "kz-proxy-item.h"
+#include "gtk-utils.h"
+#include "utils.h"
+
+typedef struct _KzWebkitGtkPrivate	KzWebkitGtkPrivate;
+struct _KzWebkitGtkPrivate
+{
+	gint cur_requests;
+	gint total_requests;
+	gchar *link_message;
+	guint32 button_press_time;
+
+	gboolean is_loading;
+	gboolean lock;
+	WebiSettings *settings;
+};
+#define KZ_WEBKIT_GTK_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_WEBKIT_GTK, KzWebkitGtkPrivate))
+
+static GType kz_type_webkit_gtk = 0;
+static WebkitViewClass *kz_webkit_gtk_parent_class;
+
+GtkWidget  *kz_webkit_gtk_new          (void);
+static void kz_webkit_gtk_class_init   (KzWebkitGtkClass *klass);
+static void kz_webkit_gtk_iface_init   (KzEmbedIFace *iface);
+static void kz_webkit_gtk_init         (KzWebkitGtk *webkit_gtk);
+static void kz_webkit_gtk_dispose      (GObject      *object);
+
+/* webkit_gtk class */
+static void         kz_webkit_gtk_status           (WebkitView     *webkit_view,
+						     WebiLoadStatus *status);
+static void         kz_webkit_gtk_load_start       (WebkitView     *webkit_view);
+static void         kz_webkit_gtk_load_stop        (WebkitView     *webkit_view);
+static void         kz_webkit_gtk_location         (WebkitView     *webkit_view);
+static void         kz_webkit_gtk_title            (WebkitView     *webkit_view);
+static void         kz_webkit_gtk_req_js_prompt    (WebkitView     *webkit_view,
+						     WebiPromptArgs *args);
+static void         kz_webkit_gtk_req_auth_prompt  (WebkitView     *webkit_view,
+						     WebiAuthArgs   *args);
+static WebkitView  *kz_webkit_gtk_req_new_window   (WebkitView     *webkit_view,
+						     const gchar *url);
+static void         kz_webkit_gtk_close_window     (WebkitView     *webkit_view);
+
+static gboolean     kz_webkit_gtk_set_cookie       (WebkitView       *webkit_view,
+						     const gchar *url,
+						     WebiCookie *cookie);
+/* embed iface */
+static void         kz_webkit_gtk_load_url         (KzEmbed      *kzembed,
+						     const gchar  *url);
+static gboolean     kz_webkit_gtk_is_loading       (KzEmbed      *kzembed);
+static const gchar *kz_webkit_gtk_get_title        (KzEmbed      *kzembed);
+static const gchar *kz_webkit_gtk_get_location     (KzEmbed      *kzembed);
+static gchar       *kz_webkit_gtk_ensure_title     (KzEmbed      *kzembed);
+static gchar       *kz_webkit_gtk_get_link_message (KzEmbed      *kzembed);
+
+static void         kz_webkit_gtk_reload           (KzEmbed      *kzembed,
+						     KzEmbedReloadFlag flags);
+static void         kz_webkit_gtk_stop_load        (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_go_back          (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_go_forward       (KzEmbed      *kzembed);
+static gboolean     kz_webkit_gtk_can_go_back      (KzEmbed      *kzembed);
+static gboolean     kz_webkit_gtk_can_go_forward   (KzEmbed      *kzembed);
+static gboolean     kz_webkit_gtk_can_go_nav_link  (KzEmbed      *kzembed,
+						     KzEmbedNavLink link);
+static void         kz_webkit_gtk_go_nav_link      (KzEmbed      *kzembed,
+						     KzEmbedNavLink link);
+static void         kz_webkit_gtk_set_nth_nav_link (KzEmbed      *kzembed,
+						     KzEmbedNavLink link,
+						     KzNavi       *navi,
+						     guint         n);
+static KzNavi      *kz_webkit_gtk_get_nth_nav_link (KzEmbed      *kzembed,
+						     KzEmbedNavLink link,
+						     guint         n);
+static GList       *kz_webkit_gtk_get_nav_links    (KzEmbed      *kzembed,
+						     KzEmbedNavLink link);
+
+static gboolean     kz_webkit_gtk_get_lock         (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_set_lock         (KzEmbed      *kzembed,
+						     gboolean      lock);
+
+static void         kz_webkit_gtk_shistory_get_nth (KzEmbed      *kzembed, 
+						     int           nth,
+						     gboolean      is_relative,
+						     char        **aUrl,
+						     char        **aTitle);
+
+static gboolean     kz_webkit_gtk_can_cut_selection  (KzEmbed      *kzembed);
+static gboolean     kz_webkit_gtk_can_copy_selection (KzEmbed      *kzembed);
+static gboolean     kz_webkit_gtk_can_paste          (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_cut_selection      (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_copy_selection     (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_paste              (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_select_all         (KzEmbed      *kzembed);
+
+static gdouble      kz_webkit_gtk_get_progress     (KzEmbed      *kzembed);
+
+static gint         kz_webkit_gtk_get_text_size    (KzEmbed      *kzembed);
+static void         kz_webkit_gtk_set_text_size    (KzEmbed      *kzembed,
+						     gint         zoom,
+						     gboolean     reflow);
+
+static gboolean     kz_webkit_gtk_find             (KzEmbed      *kzembed,
+						     const char   *keyword,
+						     gboolean      backward);
+
+static gboolean     kz_webkit_gtk_selection_is_collapsed (KzEmbed      *kzembed);
+
+static gboolean	    kz_webkit_gtk_get_allow_javascript  (KzEmbed      *kzembed);
+static void	    kz_webkit_gtk_set_allow_javascript  (KzEmbed      *kzembed,
+							  gboolean      allow);
+static gboolean	    kz_webkit_gtk_get_allow_images      (KzEmbed      *kzembed);
+static void	    kz_webkit_gtk_set_allow_images      (KzEmbed      *kzembed,
+							  gboolean      allow);
+/* WebiMouseDelegate interfaces */
+static void          kz_webkit_gtk_ui_iface_init        (WebkitUIDelegateInterface *iface);
+static gboolean	     kz_webkit_gtk_ui_mouse_action_on_element
+							 (WebkitUIDelegate	*self,
+							  WebkitView		*sender,
+							  WebkitElementInfo	*element_info,
+							  WebkitMouseEventInfo	*mouse_info);
+
+/* KzEmbedPrefs interfaces */
+static void          kz_webkit_gtk_prefs_iface_init      (KzEmbedPrefsIFace *iface);
+#if 0
+static gboolean      kz_webkit_gtk_prefs_init	    (KzEmbedPrefs *embed_prefs);
+static gboolean      kz_webkit_gtk_prefs_get_font_list   (KzEmbedPrefs *embed_prefs,
+						     const gchar  *lang_group,
+						     const gchar  *font_type,
+						     GList      **font_list,
+						     GList      **all_font_list,
+						     gchar       **default_font);
+static gboolean      kz_webkit_gtk_prefs_get_passwords   (KzEmbedPrefs *embed_prefs,
+						     GList **passwords);
+static gboolean      kz_webkit_gtk_prefs_remove_passwords(KzEmbedPrefs *embed_prefs,
+						     GList *passwords);
+#endif
+void
+kz_webkit_gtk_register_type (GTypeModule *module)
+{
+	static const GTypeInfo kz_webkit_gtk_info =
+	{
+		sizeof (KzWebkitGtkClass),
+		NULL,		/* base_init */
+		NULL,		/* base_finalize */
+		(GClassInitFunc) kz_webkit_gtk_class_init,
+		NULL,		/* class_finalize */
+		NULL,		/* class_data */
+		sizeof (KzWebkitGtk),
+		0,		/* n_preallocs */
+		(GInstanceInitFunc) kz_webkit_gtk_init,
+	};
+
+	const GInterfaceInfo kz_embed_info =
+	{
+		(GInterfaceInitFunc) kz_webkit_gtk_iface_init,
+		NULL,
+		NULL
+	};
+
+	const GInterfaceInfo kz_embed_prefs_info =
+	{
+		(GInterfaceInitFunc) kz_webkit_gtk_prefs_iface_init,
+		NULL,
+		NULL
+	};
+
+	const GInterfaceInfo webi_ui_delegate_info =
+	{
+		(GInterfaceInitFunc) kz_webkit_gtk_ui_iface_init,
+		NULL,
+		NULL
+	};
+
+	kz_type_webkit_gtk = g_type_module_register_type(module,
+						    WEBKIT_TYPE_VIEW,
+						    "KzWebkitGtk",
+						    &kz_webkit_gtk_info,
+						    (GTypeFlags)0);
+
+	g_type_module_add_interface(module,
+				    KZ_TYPE_WEBKIT_GTK,
+				    KZ_TYPE_EMBED,
+				    &kz_embed_info);
+
+	g_type_module_add_interface(module,
+				    KZ_TYPE_WEBKIT_GTK,
+				    KZ_TYPE_EMBED_PREFS,
+				    &kz_embed_prefs_info);
+	
+	g_type_module_add_interface(module,
+				    KZ_TYPE_WEBKIT_GTK,
+				    WEBKIT_TYPE_UI_DELEGATE,
+				    &webi_ui_delegate_info);
+}
+
+GType
+kz_webkit_gtk_get_type (void)
+{
+       return kz_type_webkit_gtk;
+}
+
+static void
+kz_webkit_gtk_class_init (KzWebkitGtkClass *klass)
+{
+	GObjectClass *object_class;
+	GtkWidgetClass *widget_class;
+	WebkitViewClass *webkit_gtk_class;
+
+	kz_webkit_gtk_parent_class = (WebkitViewClass *)g_type_class_peek_parent (klass);
+	object_class = (GObjectClass *) klass;
+	widget_class = (GtkWidgetClass *) klass;
+	webkit_gtk_class  = (WebkitViewClass *) klass;
+
+	object_class->dispose   = kz_webkit_gtk_dispose;
+	webkit_gtk_class->status     = kz_webkit_gtk_status;
+	webkit_gtk_class->load_start = kz_webkit_gtk_load_start;
+	webkit_gtk_class->load_stop  = kz_webkit_gtk_load_stop;
+	webkit_gtk_class->location   = kz_webkit_gtk_location;
+	webkit_gtk_class->title      = kz_webkit_gtk_title;
+#if 0
+	webkit_gtk_class->progress   = kz_webkit_gtk_progress;
+#endif
+	webkit_gtk_class->req_js_prompt   = kz_webkit_gtk_req_js_prompt;
+	webkit_gtk_class->req_auth_prompt = kz_webkit_gtk_req_auth_prompt;
+	webkit_gtk_class->req_new_window  = kz_webkit_gtk_req_new_window;
+	webkit_gtk_class->close_window    = kz_webkit_gtk_close_window;
+	webkit_gtk_class->set_cookie      = kz_webkit_gtk_set_cookie;
+
+	g_type_class_add_private (object_class, sizeof(KzWebkitGtkPrivate));
+}
+
+
+static void
+kz_webkit_gtk_iface_init (KzEmbedIFace *iface)
+{
+	iface->load_url               = kz_webkit_gtk_load_url;
+	iface->view_source            = NULL;
+	iface->is_loading             = kz_webkit_gtk_is_loading;
+	iface->get_title              = kz_webkit_gtk_get_title;
+	iface->get_location           = kz_webkit_gtk_get_location;
+	iface->ensure_title           = kz_webkit_gtk_ensure_title;
+	iface->get_link_message       = kz_webkit_gtk_get_link_message;
+	iface->get_progress           = kz_webkit_gtk_get_progress;
+	iface->can_cut_selection      = kz_webkit_gtk_can_cut_selection;
+	iface->can_copy_selection     = kz_webkit_gtk_can_copy_selection;
+	iface->can_paste              = kz_webkit_gtk_can_paste;
+	iface->cut_selection          = kz_webkit_gtk_cut_selection;
+	iface->copy_selection         = kz_webkit_gtk_copy_selection;
+	iface->paste                  = kz_webkit_gtk_paste;
+	iface->select_all             = kz_webkit_gtk_select_all;
+	iface->get_selection_string   = NULL;
+	iface->find                   = kz_webkit_gtk_find;
+	iface->incremental_search     = kz_webkit_gtk_find; /* tentavie */
+	iface->selection_is_collapsed = kz_webkit_gtk_selection_is_collapsed;
+	iface->get_links              = NULL;
+	iface->copy_page              = NULL;
+	iface->shistory_copy          = NULL;
+	iface->shistory_get_pos       = NULL;
+	iface->shistory_get_nth       = kz_webkit_gtk_shistory_get_nth;
+	iface->reload                 = kz_webkit_gtk_reload;
+	iface->stop_load              = kz_webkit_gtk_stop_load;
+	iface->go_back                = kz_webkit_gtk_go_back;
+	iface->go_forward             = kz_webkit_gtk_go_forward;
+	iface->can_go_back            = kz_webkit_gtk_can_go_back;
+	iface->can_go_forward         = kz_webkit_gtk_can_go_forward;
+	iface->can_go_nav_link        = kz_webkit_gtk_can_go_nav_link;
+	iface->go_nav_link            = kz_webkit_gtk_go_nav_link;
+	iface->append_nav_link        = NULL;
+	iface->set_nav_link           = NULL;
+	iface->set_nth_nav_link       = kz_webkit_gtk_set_nth_nav_link;
+	iface->get_nav_link           = NULL;
+	iface->get_nth_nav_link       = kz_webkit_gtk_get_nth_nav_link;
+	iface->get_nav_links          = kz_webkit_gtk_get_nav_links;
+	iface->go_history_index       = NULL;
+	iface->do_command             = NULL;
+	iface->can_do_command         = NULL;
+	iface->get_lock               = kz_webkit_gtk_get_lock;
+	iface->set_lock               = kz_webkit_gtk_set_lock;
+	iface->get_body_text          = NULL;
+#if 0
+	iface->get_selection_source   = NULL;
+#endif
+	iface->set_encoding           = NULL;
+	iface->get_encoding           = NULL;
+	iface->print                  = NULL;
+	iface->print_preview          = NULL;
+	iface->get_printer_list       = NULL;
+	iface->create_thumbnail       = NULL;
+	iface->save_with_content      = NULL;
+	iface->set_text_into_textarea = NULL;
+	iface->get_text_from_textarea = NULL;
+	iface->zoom_set               = kz_webkit_gtk_set_text_size; /* tentative */
+	iface->zoom_get               = kz_webkit_gtk_get_text_size; /* tentative */
+	iface->set_text_size          = kz_webkit_gtk_set_text_size;
+	iface->get_text_size          = kz_webkit_gtk_get_text_size;
+	iface->get_html_with_contents = NULL;
+	iface->set_history            = NULL;
+	iface->get_history            = NULL;
+	iface->get_last_modified      = NULL;
+	iface->fine_scroll            = NULL;
+	iface->page_up                = NULL;
+	iface->page_down              = NULL; 
+	iface->get_allow_javascript   = kz_webkit_gtk_get_allow_javascript; 
+	iface->set_allow_javascript   = kz_webkit_gtk_set_allow_javascript; 
+	iface->get_allow_images       = kz_webkit_gtk_get_allow_images;
+	iface->set_allow_images       = kz_webkit_gtk_set_allow_images;
+#if 0
+	iface->set_edit_mode          = NULL;
+	iface->set_view_mode          = NULL;
+#endif
+
+	iface->link_message           = NULL;
+	iface->js_status              = NULL;
+	iface->location               = NULL;
+	iface->title                  = NULL;
+	iface->progress               = NULL;
+	iface->net_start              = NULL;
+	iface->net_stop               = NULL;
+	iface->new_window             = NULL;
+	iface->open_uri               = NULL;
+	iface->size_to                = NULL;
+	iface->dom_key_down           = NULL;
+	iface->dom_key_press          = NULL;
+	iface->dom_key_up             = NULL;
+	iface->dom_mouse_down         = NULL;
+	iface->dom_mouse_up           = NULL;
+	iface->dom_mouse_click        = NULL;
+	iface->dom_mouse_dbl_click    = NULL;
+	iface->dom_mouse_over         = NULL;
+	iface->dom_mouse_out          = NULL;
+	iface->security_change        = NULL;
+	iface->status_change          = NULL;
+}
+
+
+static void
+kz_webkit_gtk_prefs_iface_init (KzEmbedPrefsIFace *iface)
+{
+	iface->init             = NULL; /* kz_webkit_gtk_prefs_init;*/
+	iface->get_font_list    = NULL; /* kz_webkit_gtk_prefs_get_font_list; */
+	iface->get_passwords    = NULL; /* kz_webkit_gtk_prefs_get_passwords; */
+	iface->remove_passwords = NULL; /* kz_webkit_gtk_prefs_remove_passwords; */
+}
+
+static void
+kz_webkit_gtk_mouse_iface_init (WebiUIDelegateInterface *iface)
+{
+	iface->mouse_action_on_element  = NULL;
+}
+
+static void
+set_font_preferences (KzProfile *profile, KzWebkitGtk *webkit_gtk)
+{
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(webkit_gtk)->settings;
+	/* font settings */
+	GList *list, *node;
+	gint i = 0;
+	gint size_variable = -1, size_fixed = -1;
+	gint min_size_variable = -1, min_size_fixed = -1;
+
+	/* workaround */
+	gchar langs[1024], *lang = NULL;
+	if (kz_profile_get_value(profile, "Language", "accept_languages", 
+				&langs, G_N_ELEMENTS(langs),
+				KZ_PROFILE_VALUE_TYPE_STRING))
+	{
+		gchar **split_str;
+		split_str = g_strsplit(langs, ",", 1);
+
+		if (split_str[0])
+		{
+			lang = g_strdup(split_str[0]);
+			g_strfreev(split_str);
+		}
+	}
+	if (!lang)
+		lang = g_strdup("");
+
+	gchar *serif_font, *sans_font, *mono_font;
+	serif_font = g_strdup_printf("name_serif_%s", lang);
+	sans_font = g_strdup_printf("name_sans-serif_%s", lang);
+	mono_font = g_strdup_printf("name_monospace_%s", lang);
+
+	list = kz_profile_enum_key(profile, "Font", TRUE);
+	for (node = list; node; node = g_list_next(node))
+	{
+		const gchar *key = (const gchar*)node->data;
+
+		if (!key || !*key) continue;
+		if (g_str_has_prefix(key, "size_variable_"))
+		{
+			gint value;
+			kz_profile_get_value(profile, "Font", key,
+					&value, sizeof(value),
+					KZ_PROFILE_VALUE_TYPE_INT);
+			if (value > size_variable)
+				size_variable = value;
+		}
+		else if (g_str_has_prefix(key, "size_fixed_"))
+		{
+			gint value;
+			kz_profile_get_value(profile, "Font", key,
+					&value, sizeof(value),
+					KZ_PROFILE_VALUE_TYPE_INT);
+			if (value > size_fixed)
+				size_fixed = value;
+		}
+		else if (g_str_has_prefix(key, "min-size_variable_"))
+		{
+			gint value;
+			kz_profile_get_value(profile, "Font", key,
+					&value, sizeof(value),
+					KZ_PROFILE_VALUE_TYPE_INT);
+			if (value > min_size_variable)
+				min_size_variable = value;
+		}
+		else if (g_str_has_prefix(key, "min-size_fixed_"))
+		{
+			gint value;
+			kz_profile_get_value(profile, "Font", key,
+					&value, sizeof(value),
+					KZ_PROFILE_VALUE_TYPE_INT);
+			if (value > min_size_fixed)
+				min_size_fixed = value;
+		}
+		else if (!strcmp(key, serif_font))
+		{
+			gchar value[1024];
+			kz_profile_get_value(profile, "Font", key,
+					&value, strlen(value)+1,
+					KZ_PROFILE_VALUE_TYPE_STRING);
+			settings->serif_font_family = g_strdup(value);
+			settings->standard_font_family = g_strdup(value);
+		}
+		else if (!strcmp(key, sans_font))
+		{
+			gchar value[1024];
+			kz_profile_get_value(profile, "Font", key,
+					&value, strlen(value)+1,
+					KZ_PROFILE_VALUE_TYPE_STRING);
+			settings->sans_serif_font_family = g_strdup(value);
+		}
+		else if (!strcmp(key, mono_font))
+		{
+			gchar value[1024];
+			kz_profile_get_value(profile, "Font", key,
+					&value, strlen(value)+1,
+					KZ_PROFILE_VALUE_TYPE_STRING);
+			settings->fixed_font_family = g_strdup(value);
+		}
+	}
+	g_list_free(list);
+	g_free(serif_font);
+	g_free(sans_font);
+	g_free(mono_font);
+
+	double dpi_pixel_ratio = 72.0 / 96.0;
+	if (size_variable >= 0)
+		settings->default_font_size = (gfloat)(size_variable * dpi_pixel_ratio);
+	if (size_fixed >= 0)
+		settings->default_fixed_font_size = (gfloat)(size_fixed * dpi_pixel_ratio);
+	if (min_size_variable >= 0)
+		settings->minimum_font_size = (gfloat)(min_size_variable * dpi_pixel_ratio);
+	if (min_size_fixed >= 0)
+		settings->minimum_font_size = (gfloat)(min_size_fixed * dpi_pixel_ratio);
+}
+
+static void
+build_user_agent (gchar *user_agent, gint size)
+{
+	gchar *system;
+
+	system = kz_utils_get_system_name();
+
+	g_snprintf(user_agent, size,
+		   "Mozilla/5.0 (X11; %s; U;) AppleWebKit/146.1 (KHTML, like Gecko) Kazehakase" VERSION,
+		   system);
+	g_free (system);
+}
+
+static void
+set_user_agent (KzProfile *profile, KzWebkitGtk *webkit_gtk)
+{
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(webkit_gtk)->settings;
+	gchar tmp_string[1024];
+	gboolean value = FALSE;
+	kz_profile_get_value(profile, "Global", "override_user_agent", 
+			     &value, sizeof(gboolean),
+			     KZ_PROFILE_VALUE_TYPE_BOOL);
+	if (value)
+	{
+		value = kz_profile_get_value(profile, "Global", "user_agent", 
+				&tmp_string, G_N_ELEMENTS(tmp_string),
+				KZ_PROFILE_VALUE_TYPE_STRING);
+	}
+	else /* set default */
+	{
+		build_user_agent(tmp_string, G_N_ELEMENTS(tmp_string));
+	}
+
+	settings->user_agent_string = g_strdup(tmp_string);
+}
+
+static void
+set_proxy (KzProfile *profile, KzWebkitGtk *webkit_gtk)
+{
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(webkit_gtk)->settings;
+	gchar tmp_string[1024];
+	gchar *http_host, *https_host, *ftp_host;
+	guint http_port, https_port, ftp_port;
+	gboolean value = FALSE, use_same_proxy;
+	KzProxyItem *item = NULL;
+
+	kz_profile_get_value(profile, "Global", "use_proxy", 
+			     &value, sizeof(gboolean),
+			     KZ_PROFILE_VALUE_TYPE_BOOL);
+	if (!value)
+		return;
+
+	value = kz_profile_get_value(profile, "Global", "proxy_name", 
+				&tmp_string, G_N_ELEMENTS(tmp_string),
+				KZ_PROFILE_VALUE_TYPE_STRING);
+	if (!value)
+		return;
+	
+	item = kz_proxy_find(tmp_string);
+	if (!item)
+		return;
+
+	g_object_get(G_OBJECT(item),
+		     "use_same_proxy", &use_same_proxy,
+		     NULL);
+	if (use_same_proxy)
+	{
+		g_object_get(G_OBJECT(item),
+			     "http_host",  &http_host,
+			     "http_port",  &http_port,
+			     NULL);
+		if (!http_host)
+			return;
+	}
+	else
+	{
+		g_object_get(G_OBJECT(item),
+			     "http_host",  &http_host,
+			     "http_port",  &http_port,
+			     "https_host", &https_host,
+			     "https_port", &https_port,
+			     "ftp_host",   &ftp_host,
+			     "ftp_port",   &ftp_port,
+			     NULL);
+	}
+
+	/* proxy for HTTP protocol */
+	if (http_host)
+		settings->http_proxy = g_strdup(http_host);
+#if 0
+	/* proxy for HTTPS protocol */
+	if (https_host)
+		settings->https_proxy = g_strdup(https_host);
+	
+	/* proxy for FTP protocol */
+	if (ftp_host)
+		settings->ftp_proxy = g_strdup(ftp_host);
+#endif	
+	if (http_host)
+		g_free(http_host);
+	if (https_host)
+		g_free(https_host);
+	if (ftp_host)
+		g_free(ftp_host);
+}
+
+static void
+set_default_preferences (KzWebkitGtk *webkit_gtk)
+{
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(webkit_gtk)->settings;
+	KzProfile *profile = KZ_GET_GLOBAL_PROFILE;
+
+	gchar value[1024];
+	if (kz_profile_get_value(profile, "Language", "charset_default", 
+				&value, G_N_ELEMENTS(value),
+				KZ_PROFILE_VALUE_TYPE_STRING))
+	{
+		settings->default_text_encoding = g_strdup(value);
+	}
+
+	set_user_agent(profile, webkit_gtk);
+	set_font_preferences (profile, webkit_gtk);
+	set_proxy(profile, webkit_gtk);
+	
+	settings->plugins_enabled = TRUE;
+	settings->javascript_enabled = TRUE;
+	settings->java_enabled = TRUE;
+	settings->autoload_images = TRUE;
+
+	webi_set_settings(WEBI(webkit_gtk), settings);
+#if 0
+	OSB::Features *features = get_osb_features(WEBI(webkit_gtk));
+	features->setToolbarsVisible(FALSE);
+	features->setStatusBarVisible(FALSE);
+#endif
+}
+
+static void
+kz_webkit_gtk_init (KzWebkitGtk *webkit_gtk)
+{
+	KzWebkitGtkPrivate *priv = KZ_WEBKIT_GTK_GET_PRIVATE (webkit_gtk);
+
+	priv->is_loading = FALSE;
+	priv->cur_requests   = 0;
+	priv->total_requests = 0;
+	priv->link_message   = NULL;
+
+	priv->button_press_time = 0;
+
+	priv->settings = g_new0(WebiSettings, 1);
+
+	set_default_preferences(webkit_gtk);
+	webi_set_emit_internal_status(WEBI(webkit_gtk), TRUE);
+
+	webkit_set_ui_delegate(WEBI(webkit_gtk), WEBI_UI_DELEGATE(webkit_gtk));
+	gtk_widget_show(GTK_WIDGET(webkit_gtk));
+}
+
+static void
+free_webi_settings (WebiSettings *settings)
+{
+	if (settings->default_text_encoding)
+		g_free((gchar*)settings->default_text_encoding);
+	if (settings->serif_font_family)
+		g_free((gchar*)settings->serif_font_family);
+	if (settings->sans_serif_font_family)
+		g_free((gchar*)settings->sans_serif_font_family);
+	if (settings->fixed_font_family)
+		g_free((gchar*)settings->fixed_font_family);
+	if (settings->standard_font_family)
+		g_free((gchar*)settings->standard_font_family);
+	if (settings->cursive_font_family)
+		g_free((gchar*)settings->cursive_font_family);
+	if (settings->fantasy_font_family)
+		g_free((gchar*)settings->fantasy_font_family);
+	if (settings->user_agent_string)
+		g_free((gchar*)settings->user_agent_string);
+	if (settings->http_proxy)
+		g_free((gchar*)settings->http_proxy);
+}
+
+static void
+kz_webkit_gtk_dispose (GObject *object)
+{
+	KzWebkitGtkPrivate *priv = KZ_WEBKIT_GTK_GET_PRIVATE(object);
+
+	if (priv->link_message)
+		g_free(priv->link_message);
+	priv->link_message = NULL;
+
+	if (priv->settings)
+	{
+		free_webi_settings(priv->settings);
+		g_free(priv->settings);
+	}
+	priv->settings = NULL;
+
+	if (G_OBJECT_CLASS(kz_webkit_gtk_parent_class)->dispose)
+		G_OBJECT_CLASS(kz_webkit_gtk_parent_class)->dispose(object);
+}
+
+GtkWidget *
+kz_webkit_gtk_new (void)
+{
+	return GTK_WIDGET(g_object_new(KZ_TYPE_WEBKIT_GTK, NULL));
+}
+
+static void
+kz_webkit_gtk_status (Webi *webi, WebiLoadStatus *status)
+{
+	KzWebkitGtkPrivate *priv;
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+	g_return_if_fail(status);
+
+	priv = KZ_WEBKIT_GTK_GET_PRIVATE (webi);
+
+	switch(status->status) {
+	case WEBI_LOADING_START:
+		priv->is_loading = TRUE;
+		priv->cur_requests = 0;
+		priv->total_requests = 0;
+		g_signal_emit_by_name(webi, "kz-net-start");
+		break;
+	case WEBI_LOADING:
+		priv->cur_requests = status->totalReceived;
+		priv->total_requests = status->totalSize;
+		g_signal_emit_by_name(webi, "kz-progress");
+		break;
+	case WEBI_LOADING_COMPLETE:
+	case WEBI_LOADING_ERROR:
+		priv->is_loading = FALSE;
+		priv->cur_requests = status->totalReceived;
+		priv->total_requests = status->totalSize;
+		g_signal_emit_by_name(webi, "kz-net-stop");
+		break;
+	default:
+		break;
+	}
+
+	/* call parent method */
+}
+
+
+static void
+kz_webkit_gtk_load_start (Webi *webi)
+{
+	KzWebkitGtkPrivate *priv;
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+
+	priv = KZ_WEBKIT_GTK_GET_PRIVATE (webi);
+	priv->is_loading = TRUE;
+
+	g_signal_emit_by_name(webi, "kz-net-start");
+
+	/* call parent method */
+}
+
+
+static void
+kz_webkit_gtk_load_stop (Webi *webi)
+{
+	KzWebkitGtkPrivate *priv;
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+
+	priv = KZ_WEBKIT_GTK_GET_PRIVATE (webi);
+	priv->is_loading = FALSE;
+
+	g_signal_emit_by_name(webi, "kz-net-stop");
+
+	/* call parent method */
+}
+
+
+static void
+kz_webkit_gtk_location (Webi *webi)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+
+	g_signal_emit_by_name(webi, "kz-location");
+
+	/* call parent method */
+}
+
+
+static void
+kz_webkit_gtk_title (Webi *webi)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+
+	g_signal_emit_by_name(webi, "kz-title");
+
+	/* call parent method */
+}
+
+
+static void
+kz_webkit_gtk_req_js_prompt (Webi *webi, WebiPromptArgs* args)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+}
+
+
+static void
+kz_webkit_gtk_req_auth_prompt (Webi *webi, WebiAuthArgs* args)
+{
+	KzPromptDialog *prompt;
+	gchar *message;
+
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+
+	prompt= KZ_PROMPT_DIALOG(kz_prompt_dialog_new(TYPE_PROMPT_USER_PASS));
+
+	kz_prompt_dialog_set_title(prompt, _("Authentication"));
+	message = g_strdup_printf (_("Enter username and password for %s at %s"),
+				   args->realm, args->url);
+	kz_prompt_dialog_set_message_text(prompt, message);
+	g_free(message);
+	kz_prompt_dialog_run(prompt);
+
+	args->out_ok_pressed = kz_prompt_dialog_get_confirm_value(prompt);
+	args->out_username = g_strdup(kz_prompt_dialog_get_user(prompt));
+	args->out_password = g_strdup(kz_prompt_dialog_get_password(prompt));
+
+	gtk_widget_destroy(GTK_WIDGET(prompt));
+}
+
+
+static Webi *
+kz_webkit_gtk_req_new_window (Webi *webi, const gchar *url)
+{
+	Webi *new_webkit_gtk = NULL;
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(webi), NULL);
+	
+	g_signal_emit_by_name(webi, "kz-new-window", &new_webkit_gtk);
+	webi_load_url(new_webkit_gtk, url);
+
+	return new_webkit_gtk;
+}
+
+static void
+kz_webkit_gtk_close_window (Webi *webi)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+	
+	gtk_widget_destroy(GTK_WIDGET(webi));
+}
+
+static void
+get_mouse_event_info(KzEmbedEventMouse **kzevent)
+{
+	GdkModifierType state = (GdkModifierType)0;
+	gint x, y;
+	KzEmbedEventMouse *ret;
+	KzEmbedEvent *info;
+
+	gdk_window_get_pointer(NULL, &x, &y, &state);
+	ret = (KzEmbedEventMouse *) kz_embed_event_new(KZ_EMBED_EVENT_MOUSE);
+
+	info = (KzEmbedEvent *) ret;
+	info->context = KZ_CONTEXT_NONE;
+
+	ret->x = x;
+	ret->y = y;
+	if (state & GDK_SHIFT_MASK)
+        	ret->modifier |= KZ_SHIFT_KEY;
+	if (state & GDK_CONTROL_MASK)
+        	ret->modifier |= KZ_CTRL_KEY;
+	if (state & GDK_MOD1_MASK)
+        	ret->modifier |= KZ_ALT_KEY;
+	if (state & GDK_META_MASK)
+        	ret->modifier |= KZ_META_KEY;
+	
+	*kzevent = ret;
+}
+
+static void
+kz_webkit_gtk_mouse_action_on_element (WebiUIDelegate *self,
+					WebkitView *sender,
+					WebKitElementInfo *element_info,
+					WebKitMouseEventInfo *mouse_info)
+{
+}
+	KzEmbedEventMouse *kzevent;
+	gint ret = FALSE;
+	KzWebkitGtkPrivate *priv;
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(webi));
+
+	priv = KZ_WEBKIT_GTK_GET_PRIVATE(webi);
+	get_mouse_event_info(&kzevent);
+
+	const gchar *link_url = webi_event_info_get_link_url((WebiEventInfo*)event_info);
+	if (!link_url)
+	{
+		if (priv->link_message)
+		{
+			g_free(priv->link_message);
+			priv->link_message = NULL;
+			g_signal_emit_by_name(webi, "kz-link-message");
+		}
+	}
+	else	
+	{
+		KzEmbedEvent *info = (KzEmbedEvent *) kzevent;
+		info->context |= KZ_CONTEXT_LINK;
+		info->link = g_strdup(link_url);
+		info->linktext = g_strdup(webi_event_info_get_link_label((WebiEventInfo*)event_info));
+
+		if (priv->link_message)
+			g_free(priv->link_message);
+
+		priv->link_message = g_strdup(link_url);
+
+		g_signal_emit_by_name(webi, "kz-link-message");
+	}
+
+	g_signal_emit_by_name(webi, "kz-dom-mouse-over",
+			      kzevent, &ret);
+	kz_embed_event_free((KzEmbedEvent *) kzevent);
+}
+
+gboolean
+kz_webkit_gtk_mouse_down (WebiMouseDelegate *webi, WebiEventInfo *event_info)
+{
+	KzEmbedEventMouse *kzevent;
+	gint ret = FALSE;
+	KzWebkitGtkPrivate *priv;
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(webi), FALSE);
+
+	priv = KZ_WEBKIT_GTK_GET_PRIVATE(webi);
+	priv->button_press_time = GDK_CURRENT_TIME;
+
+	get_mouse_event_info(&kzevent);
+	kzevent->button = webi_event_info_get_button((WebiEventInfo*)event_info);
+
+	((KzEmbedEvent *)kzevent)->context |= KZ_CONTEXT_DOCUMENT;
+	const gchar *link_url = webi_event_info_get_link_url((WebiEventInfo*)event_info);
+	if (link_url)
+	{
+		((KzEmbedEvent *)kzevent)->context |= KZ_CONTEXT_LINK;
+		((KzEmbedEvent *)kzevent)->link = g_strdup(link_url);
+	}
+
+	g_signal_emit_by_name(webi, "kz-dom-mouse-down",
+			      kzevent, &ret);
+	kz_embed_event_free((KzEmbedEvent *) kzevent);
+
+	return ret;
+}
+
+static gboolean
+kz_webkit_gtk_mouse_up (WebiMouseDelegate *webi, WebiEventInfo *event_info)
+{
+	KzEmbedEventMouse *kzevent;
+	gint ret = FALSE;
+	KzWebkitGtkPrivate *priv;
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(webi), FALSE);
+
+	priv = KZ_WEBKIT_GTK_GET_PRIVATE(webi);
+
+	get_mouse_event_info(&kzevent);
+	kzevent->button = webi_event_info_get_button((WebiEventInfo*)event_info);
+
+	((KzEmbedEvent *)kzevent)->context |= KZ_CONTEXT_DOCUMENT;
+
+	g_signal_emit_by_name(webi, "kz-dom-mouse-up",
+			      kzevent, &ret);
+
+	if (!ret && GDK_CURRENT_TIME < priv->button_press_time + 1000)
+	{
+		const gchar *link_url = webi_event_info_get_link_url((WebiEventInfo*)event_info);
+		if (link_url)
+		{
+			((KzEmbedEvent *)kzevent)->context |= KZ_CONTEXT_LINK;
+			((KzEmbedEvent *)kzevent)->link = g_strdup(link_url);
+		}
+
+		g_signal_emit_by_name(webi, "kz-dom-mouse-click",
+				      kzevent, &ret);
+	}
+	priv->button_press_time = 0;
+
+	kz_embed_event_free((KzEmbedEvent *) kzevent);
+
+	return ret;
+}
+
+static gboolean
+kz_webkit_gtk_set_cookie (Webi *webi, const gchar *url, WebiCookie *cookie)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(webi), FALSE);
+
+	return TRUE;
+}
+
+static gboolean
+kz_webkit_gtk_is_loading (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	return KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->is_loading;
+}
+
+
+static void
+kz_webkit_gtk_load_url (KzEmbed *kzembed, const gchar *url)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	webi_load_url(WEBI(kzembed), url);
+}
+
+
+static const gchar *
+kz_webkit_gtk_get_title (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), NULL);
+
+	return webi_get_title(WEBI(kzembed));
+}
+
+
+static const gchar *
+kz_webkit_gtk_get_location (KzEmbed *kzembed)
+{
+	const gchar *location;
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), NULL);
+
+	location = webi_get_location(WEBI(kzembed));
+	return location ? location : "";
+}
+
+static gchar *
+kz_webkit_gtk_get_link_message (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), NULL);
+
+	return g_strdup(KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->link_message);
+}
+
+static gchar *
+kz_webkit_gtk_ensure_title (KzEmbed *kzembed)
+{
+	const gchar *title;
+
+	title = kz_webkit_gtk_get_title(kzembed);
+	if (title)
+		return g_strdup(title);
+
+	title = kz_webkit_gtk_get_location(kzembed);
+	if (title)
+		return g_strdup(title);
+
+	return g_strdup(_("No title"));
+}
+
+static void
+kz_webkit_gtk_shistory_get_nth (KzEmbed *kzembed, 
+			         int nth,
+				 gboolean is_relative,
+				 char **aUrl,
+				 char **aTitle)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+}
+
+static void
+kz_webkit_gtk_reload (KzEmbed *kzembed, KzEmbedReloadFlag flags)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	webi_refresh(WEBI(kzembed));
+}
+
+
+static void
+kz_webkit_gtk_stop_load (KzEmbed *kzembed)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	webi_stop_load(WEBI(kzembed));
+}
+
+
+static void
+kz_webkit_gtk_go_back (KzEmbed *kzembed)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	return webi_go_back(WEBI(kzembed));
+}
+
+
+static void
+kz_webkit_gtk_go_forward (KzEmbed *kzembed)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	return webi_go_forward(WEBI(kzembed));
+}
+
+
+static gboolean
+kz_webkit_gtk_can_go_back (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	return webi_can_go_back(WEBI(kzembed));
+}
+
+
+static gboolean
+kz_webkit_gtk_can_go_forward (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	return webi_can_go_forward(WEBI(kzembed));
+}
+
+
+static gboolean
+kz_webkit_gtk_can_go_nav_link (KzEmbed *kzembed, KzEmbedNavLink link)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	return FALSE;
+}
+
+static void
+kz_webkit_gtk_go_nav_link (KzEmbed *kzembed, KzEmbedNavLink link)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	return;
+}
+
+static void
+kz_webkit_gtk_set_nth_nav_link (KzEmbed *kzembed,
+			   KzEmbedNavLink link,
+			   KzNavi *navi,
+			   guint n)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	return;
+}
+
+static KzNavi *
+kz_webkit_gtk_get_nth_nav_link (KzEmbed *kzembed,
+			   KzEmbedNavLink link,
+			   guint n)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), NULL);
+
+	return NULL;
+}
+
+static GList *
+kz_webkit_gtk_get_nav_links (KzEmbed *kzembed,
+			KzEmbedNavLink link)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), NULL);
+
+	return NULL;
+}
+
+static gdouble
+kz_webkit_gtk_get_progress (KzEmbed *kzembed)
+{
+	gdouble progress;
+	KzWebkitGtk *webkit_gtk;
+	KzWebkitGtkPrivate *priv;
+
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), 0.0);
+
+	priv = KZ_WEBKIT_GTK_GET_PRIVATE (kzembed);
+
+	webkit_gtk = KZ_WEBKIT_GTK(kzembed);
+	if (priv->total_requests <= 0 ||
+	    priv->cur_requests <= 0)
+	{
+		return 0.0;
+	}
+
+	progress = (gdouble) priv->cur_requests
+		/ (gdouble) priv->total_requests;
+
+	return (progress < 1.0) ? progress : 1.0;
+}
+
+
+static gint
+kz_webkit_gtk_get_text_size (KzEmbed *kzembed)
+{
+	gfloat multiplier;
+
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), 100);
+
+	multiplier = webi_get_text_multiplier(WEBI(kzembed));
+	
+	if (multiplier == -1.0) return 100;
+
+	return (gint) rint(multiplier * 100);
+}
+
+
+static void
+kz_webkit_gtk_set_text_size (KzEmbed *kzembed, gint zoom, gboolean reflow)
+{
+	gfloat multiplier;
+
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	multiplier = (gfloat)(zoom) / 100;
+
+	webi_set_text_multiplier(WEBI(kzembed), multiplier);
+}
+
+
+static gboolean
+kz_webkit_gtk_find (KzEmbed *kzembed, const char *keyword, gboolean backward)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	return webi_find(WEBI(kzembed), keyword, FALSE, backward); 
+}
+
+static gboolean
+kz_webkit_gtk_can_cut_selection (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	/* not implemented yet */
+	return FALSE;
+}
+
+static gboolean
+kz_webkit_gtk_can_copy_selection (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	/* alwasy return TRUE */
+	return TRUE;
+}
+
+static gboolean
+kz_webkit_gtk_can_paste (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+	/* not implemented yet */
+	return FALSE;
+}
+
+static void
+kz_webkit_gtk_cut_selection (KzEmbed *kzembed)
+{
+	/* not implemented yet */
+}
+
+static void
+kz_webkit_gtk_copy_selection (KzEmbed *kzembed)
+{
+	gchar *selected;
+	selected = webi_get_current_selection_as_text(WEBI(kzembed));
+
+	gtkutil_copy_text(selected);
+
+	if (selected)
+		g_free (selected);
+}
+
+static void
+kz_webkit_gtk_paste (KzEmbed *kzembed)
+{
+	/* not implemented yet */
+}
+
+static void
+kz_webkit_gtk_select_all (KzEmbed *kzembed)
+{
+	/* not implemented yet */
+}
+
+static gboolean
+kz_webkit_gtk_selection_is_collapsed (KzEmbed *kzembed)
+{
+	/* not implemented yet */
+	return FALSE;
+}
+
+static gboolean
+kz_webkit_gtk_get_allow_javascript (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->settings;
+
+	return settings->javascript_enabled ? TRUE : FALSE;
+}
+
+static void
+kz_webkit_gtk_set_allow_javascript (KzEmbed *kzembed, gboolean allow)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->settings;
+
+	settings->javascript_enabled = allow;
+	webi_set_settings(WEBI(kzembed), settings);
+}
+
+static gboolean
+kz_webkit_gtk_get_allow_images (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->settings;
+
+	return settings->autoload_images;
+}
+
+static void
+kz_webkit_gtk_set_allow_images (KzEmbed *kzembed, gboolean allow)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+
+	WebiSettings *settings = KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->settings;
+
+	settings->autoload_images = allow;
+	webi_set_settings(WEBI(kzembed), settings);
+}
+
+static gboolean
+kz_webkit_gtk_get_lock (KzEmbed *kzembed)
+{
+	g_return_val_if_fail(KZ_IS_WEBKIT_GTK(kzembed), FALSE);
+	return KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->lock;
+}
+
+static void
+kz_webkit_gtk_set_lock (KzEmbed *kzembed, gboolean lock)
+{
+	g_return_if_fail(KZ_IS_WEBKIT_GTK(kzembed));
+	KZ_WEBKIT_GTK_GET_PRIVATE(kzembed)->lock = lock;
+}
+

Added: kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.h
===================================================================
--- kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.h	2007-04-20 12:38:40 UTC (rev 3207)
+++ kazehakase/trunk/module/embed/gtk-webcore/kz-webkit-gtk.h	2007-04-25 03:45:57 UTC (rev 3208)
@@ -0,0 +1,58 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ *  Copyright (C) 2004 Takuro Ashie
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *  $Id: kz-gtk-webcore.h 3033 2007-03-26 23:31:29Z ikezoe $
+ */
+
+#ifndef __KZ_WEBKIT_GTK_H__
+#define __KZ_WEBKIT_GTK_H__
+
+#include <gtk/gtk.h>
+#include <webkit-gtk/webkit.h>
+
+G_BEGIN_DECLS
+
+#define KZ_TYPE_WEBKIT_GTK		(kz_webkit_gtk_get_type ())
+#define KZ_WEBKIT_GTK(obj)		(G_TYPE_CHECK_INSTANCE_CAST ((obj), KZ_TYPE_WEBKIT_GTK, KzWebkitGtk))
+#define KZ_WEBKIT_GTK_CLASS(klass)	(G_TYPE_CHECK_CLASS_CAST ((klass), KZ_TYPE_WEBKIT_GTK, KzWebkitGtkClass))
+#define KZ_IS_WEBKIT_GTK(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), KZ_TYPE_WEBKIT_GTK))
+#define KZ_IS_WEBKIT_GTK_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), KZ_TYPE_WEBKIT_GTK))
+#define KZ_WEBKIT_GTK_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS ((obj), KZ_TYPE_WEBKIT_GTK, KzWebkitGtkClass))
+
+typedef struct _KzWebkitGtk		KzWebkitGtk;
+typedef struct _KzWebkitGtkClass	KzWebkitGtkClass;
+
+struct _KzWebkitGtk
+{
+	/* embedding widget */
+	WebkitView parent;
+};
+
+struct _KzWebkitGtkClass
+{
+	WebkitViewClass parent_class;
+};
+
+
+GType        kz_webkit_gtk_get_type              (void) G_GNUC_CONST;
+void         kz_webkit_gtk_register_type         (GTypeModule *module);
+
+G_END_DECLS
+
+#endif /* __KZ_WEBKIT_GTK_H__ */




More information about the Kazehakase-cvs mailing list
Back to archive index