svnno****@sourc*****
svnno****@sourc*****
Mon Oct 22 13:44:53 JST 2007
Revision: 3306 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=kazehakase&view=rev&rev=3306 Author: ikezoe Date: 2007-10-22 13:44:52 +0900 (Mon, 22 Oct 2007) Log Message: ----------- 2007-10-22 Hiroyuki Ikezoe <poinc****@ikezo*****> * module/embed/ie/*.cpp -> module/embed/ie/*.c: rename. Modified Paths: -------------- kazehakase/trunk/ChangeLog kazehakase/trunk/module/embed/ie/Makefile.am Added Paths: ----------- kazehakase/trunk/module/embed/ie/kz-ie-module.c kazehakase/trunk/module/embed/ie/kz-ie.c Removed Paths: ------------- kazehakase/trunk/module/embed/ie/kz-ie-module.cpp kazehakase/trunk/module/embed/ie/kz-ie.cpp Modified: kazehakase/trunk/ChangeLog =================================================================== --- kazehakase/trunk/ChangeLog 2007-10-21 22:11:32 UTC (rev 3305) +++ kazehakase/trunk/ChangeLog 2007-10-22 04:44:52 UTC (rev 3306) @@ -1,5 +1,9 @@ 2007-10-22 Hiroyuki Ikezoe <poinc****@ikezo*****> + * module/embed/ie/*.cpp -> module/embed/ie/*.c: rename. + +2007-10-22 Hiroyuki Ikezoe <poinc****@ikezo*****> + * module/embed/ie/kz-ie.cpp: get_selection_string(). 2007-10-19 Hiroyuki Ikezoe <poinc****@ikezo*****> Modified: kazehakase/trunk/module/embed/ie/Makefile.am =================================================================== --- kazehakase/trunk/module/embed/ie/Makefile.am 2007-10-21 22:11:32 UTC (rev 3305) +++ kazehakase/trunk/module/embed/ie/Makefile.am 2007-10-22 04:44:52 UTC (rev 3306) @@ -29,8 +29,8 @@ $(LIBTOOL_EXPORT_OPTIONS) ie_la_SOURCES = \ - kz-ie-module.cpp \ - kz-ie.cpp kz-ie.h + kz-ie-module.c \ + kz-ie.c kz-ie.h ie_la_LIBADD = \ $(GTK_LIBS) \ Copied: kazehakase/trunk/module/embed/ie/kz-ie-module.c (from rev 3300, kazehakase/trunk/module/embed/ie/kz-ie-module.cpp) Deleted: kazehakase/trunk/module/embed/ie/kz-ie-module.cpp =================================================================== --- kazehakase/trunk/module/embed/ie/kz-ie-module.cpp 2007-10-21 22:11:32 UTC (rev 3305) +++ kazehakase/trunk/module/embed/ie/kz-ie-module.cpp 2007-10-22 04:44:52 UTC (rev 3306) @@ -1,50 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - -/* - * Copyright (C) 2007 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.cpp 3032 2007-03-26 10:30:49Z ikezoe $ - */ - -#include <glib/gi18n.h> - -#include "kz-module-impl.h" -#include "kz-ie.h" - -G_MODULE_EXPORT void -KZ_MODULE_IMPL_INIT (GTypeModule *module) -{ - kz_ie_register_type(module); -} - -G_MODULE_EXPORT void -KZ_MODULE_IMPL_EXIT (void) -{ -} - -G_MODULE_EXPORT GObject * -KZ_MODULE_IMPL_INSTANTIATE (const gchar *first_property, - va_list var_args) -{ - return g_object_new_valist(KZ_TYPE_IE, first_property, var_args); -} - -G_MODULE_EXPORT const gchar * -KZ_MODULE_IMPL_GET_NAME (void) -{ - return "Internet Explorer"; -} Copied: kazehakase/trunk/module/embed/ie/kz-ie.c (from rev 3305, kazehakase/trunk/module/embed/ie/kz-ie.cpp) =================================================================== --- kazehakase/trunk/module/embed/ie/kz-ie.cpp 2007-10-21 22:11:32 UTC (rev 3305) +++ kazehakase/trunk/module/embed/ie/kz-ie.c 2007-10-22 04:44:52 UTC (rev 3306) @@ -0,0 +1,755 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + +/* + * Copyright (C) 2007 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.cpp 3111 2007-03-30 08:18:40Z makeinu $ + */ + +#include <glib/gi18n.h> + +#define __USE_XOPEN +#include <time.h> +#include "kazehakase.h" +#include "kz-ie.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 "kz-missing.h" + +typedef struct _KzIEPrivate KzIEPrivate; +struct _KzIEPrivate +{ + glong current_progress; + glong max_progress; + gchar *location; + gchar *title; +}; +#define KZ_IE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_IE, KzIEPrivate)) + +static GType kz_type_ie = 0; +static GtkIEEmbedClass *kz_ie_parent_class; + +GtkWidget *kz_ie_new (void); +static void kz_ie_class_init (KzIEClass *klass); +static void kz_ie_iface_init (KzEmbedIFace *iface); +static void kz_ie_init (KzIE *ie); +static void kz_ie_dispose (GObject *object); + +/* GtkIEEmbed signals */ +static void kz_ie_embed_location (GtkIEEmbed *ieembed, + const gchar *location); +static void kz_ie_embed_title (GtkIEEmbed *ieembed, + const gchar *title); +static void kz_ie_embed_progress (GtkIEEmbed *ieembed, + glong current_progress, + glong max_progress); +static void kz_ie_embed_net_start (GtkIEEmbed *ieembed); +static void kz_ie_embed_net_stop (GtkIEEmbed *ieembed); +static gboolean kz_ie_embed_dom_mouse_down (GtkIEEmbed *embed, + GtkIEEmbedDOMMouseEvent *event); +static gboolean kz_ie_embed_dom_mouse_up (GtkIEEmbed *embed, + GtkIEEmbedDOMMouseEvent *event); +static gboolean kz_ie_embed_dom_mouse_move (GtkIEEmbed *embed, + GtkIEEmbedDOMMouseEvent *event); +static gboolean kz_ie_embed_dom_mouse_click (GtkIEEmbed *embed, + GtkIEEmbedDOMMouseEvent *event); + +/* embed iface */ +static void kz_ie_load_url (KzEmbed *kzembed, + const gchar *url); +static const gchar *kz_ie_get_title (KzEmbed *kzembed); +static const gchar *kz_ie_get_location (KzEmbed *kzembed); +static gchar *kz_ie_ensure_title (KzEmbed *kzembed); +static gdouble kz_ie_get_progress (KzEmbed *kzembed); +static void kz_ie_reload (KzEmbed *kzembed, + KzEmbedReloadFlag flags); +static void kz_ie_stop_load (KzEmbed *kzembed); +static gboolean kz_ie_is_loading (KzEmbed *kzembed); +static void kz_ie_go_back (KzEmbed *kzembed); +static void kz_ie_go_forward (KzEmbed *kzembed); +static gboolean kz_ie_can_go_back (KzEmbed *kzembed); +static gboolean kz_ie_can_go_forward (KzEmbed *kzembed); +static gboolean kz_ie_can_cut_selection + (KzEmbed *kzembed); +static gboolean kz_ie_can_copy_selection + (KzEmbed *kzembed); +static gboolean kz_ie_can_paste (KzEmbed *kzembed); +static void kz_ie_cut_selection (KzEmbed *kzembed); +static void kz_ie_copy_selection (KzEmbed *kzembed); +static void kz_ie_paste (KzEmbed *kzembed); +static void kz_ie_select_all (KzEmbed *kzembed); +static void kz_ie_print (KzEmbed *kzembed); +static void kz_ie_print_preview (KzEmbed *kzembed); +static void kz_ie_set_text_size (KzEmbed *kzembed, + int zoom, + gboolean reflow); +static gint kz_ie_get_text_size (KzEmbed *kzembed); +static void kz_ie_set_encoding (KzEmbed *kzembed, + const gchar *encoding); +static void kz_ie_get_encoding (KzEmbed *kzembed, + gchar **encoding, + gboolean *forced); +static guint kz_ie_get_last_modified + (KzEmbed *kzembed); +static gchar *kz_ie_get_selection_string + (KzEmbed *kzembed); + +/* KzEmbedPrefs interfaces */ +/* no functions is implemented yet */ +static void kz_ie_prefs_iface_init (KzEmbedPrefsIFace *iface); + +void +kz_ie_register_type (GTypeModule *module) +{ + static const GTypeInfo kz_ie_info = + { + sizeof (KzIEClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) kz_ie_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (KzIE), + 0, /* n_preallocs */ + (GInstanceInitFunc) kz_ie_init, + }; + + const GInterfaceInfo kz_embed_info = + { + (GInterfaceInitFunc) kz_ie_iface_init, + NULL, + NULL + }; + + const GInterfaceInfo kz_embed_prefs_info = + { + (GInterfaceInitFunc) kz_ie_prefs_iface_init, + NULL, + NULL + }; + + kz_type_ie = g_type_module_register_type(module, + GTK_TYPE_IE_EMBED, + "KzIE", + &kz_ie_info, + (GTypeFlags)0); + + g_type_module_add_interface(module, + KZ_TYPE_IE, + KZ_TYPE_EMBED, + &kz_embed_info); + + g_type_module_add_interface(module, + KZ_TYPE_IE, + KZ_TYPE_EMBED_PREFS, + &kz_embed_prefs_info); +} + +GType +kz_ie_get_type (void) +{ + return kz_type_ie; +} + +static void +kz_ie_class_init (KzIEClass *klass) +{ + GObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkIEEmbedClass *ie_class; + + kz_ie_parent_class = GTK_IE_EMBED_CLASS(g_type_class_peek_parent(klass)); + object_class = G_OBJECT_CLASS(klass); + widget_class = GTK_WIDGET_CLASS(klass); + ie_class = GTK_IE_EMBED_CLASS(klass); + + object_class->dispose = kz_ie_dispose; + + ie_class->location = kz_ie_embed_location; + ie_class->title = kz_ie_embed_title; + ie_class->net_start = kz_ie_embed_net_start; + ie_class->net_stop = kz_ie_embed_net_stop; + ie_class->progress = kz_ie_embed_progress; + ie_class->dom_mouse_down = kz_ie_embed_dom_mouse_down; + ie_class->dom_mouse_move = kz_ie_embed_dom_mouse_move; + ie_class->dom_mouse_up = kz_ie_embed_dom_mouse_up; + ie_class->dom_mouse_click = kz_ie_embed_dom_mouse_click; + + g_type_class_add_private(object_class, sizeof(KzIEPrivate)); +} + + +static void +kz_ie_iface_init (KzEmbedIFace *iface) +{ + iface->load_url = kz_ie_load_url; + iface->view_source = NULL; + iface->is_loading = kz_ie_is_loading; + iface->get_title = kz_ie_get_title; + iface->get_location = kz_ie_get_location; + iface->ensure_title = kz_ie_ensure_title; + iface->get_link_message = NULL; + iface->get_progress = kz_ie_get_progress; + iface->can_cut_selection = kz_ie_can_cut_selection; + iface->can_copy_selection = kz_ie_can_copy_selection; + iface->can_paste = kz_ie_can_paste; + iface->cut_selection = kz_ie_cut_selection; + iface->copy_selection = kz_ie_copy_selection; + iface->paste = kz_ie_paste; + iface->select_all = kz_ie_select_all; + iface->get_selection_string = kz_ie_get_selection_string; + iface->find = NULL; + iface->incremental_search = NULL; + iface->selection_is_collapsed = NULL; + iface->get_links = NULL; + iface->copy_page = NULL; + iface->shistory_copy = NULL; + iface->shistory_get_pos = NULL; + iface->shistory_get_nth = NULL; + iface->reload = kz_ie_reload; + iface->stop_load = kz_ie_stop_load; + iface->go_back = kz_ie_go_back; + iface->go_forward = kz_ie_go_forward; + iface->can_go_back = kz_ie_can_go_back; + iface->can_go_forward = kz_ie_can_go_forward; + iface->can_go_nav_link = NULL; + iface->go_nav_link = NULL; + iface->append_nav_link = NULL; + iface->set_nav_link = NULL; + iface->set_nth_nav_link = NULL; + iface->get_nav_link = NULL; + iface->get_nth_nav_link = NULL; + iface->get_nav_links = NULL; + iface->go_history_index = NULL; + iface->do_command = NULL; + iface->can_do_command = NULL; + iface->get_lock = NULL; + iface->set_lock = NULL; + iface->get_body_text = NULL; +#if 0 + iface->get_selection_source = NULL; +#endif + iface->set_encoding = kz_ie_set_encoding; + iface->get_encoding = kz_ie_get_encoding; + iface->print = kz_ie_print; + iface->print_preview = kz_ie_print_preview; + 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_ie_set_text_size; + iface->zoom_get = kz_ie_get_text_size; + iface->set_text_size = kz_ie_set_text_size; + iface->get_text_size = kz_ie_get_text_size; + iface->get_html_with_contents = NULL; + iface->set_history = NULL; + iface->get_history = NULL; + iface->get_last_modified = kz_ie_get_last_modified; + iface->fine_scroll = NULL; + iface->page_up = NULL; + iface->page_down = NULL; + iface->get_allow_javascript = NULL; + iface->set_allow_javascript = NULL; + iface->get_allow_images = NULL; + iface->set_allow_images = NULL; +#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_ie_prefs_iface_init (KzEmbedPrefsIFace *iface) +{ + iface->init = NULL; /* kz_ie_prefs_init;*/ + iface->get_font_list = NULL; /* kz_ie_prefs_get_font_list; */ + iface->get_passwords = NULL; /* kz_ie_prefs_get_passwords; */ + iface->remove_passwords = NULL; /* kz_ie_prefs_remove_passwords; */ +} + +static void +kz_ie_init (KzIE *ie) +{ + KzIEPrivate *priv = KZ_IE_GET_PRIVATE (ie); + + priv->location = NULL; + priv->title = NULL; + + priv->current_progress = 0; + priv->max_progress =0; +} + +static void +kz_ie_dispose (GObject *object) +{ + KzIEPrivate *priv = KZ_IE_GET_PRIVATE(object); + + if (priv->location) + g_free(priv->location); + if (priv->title) + g_free(priv->title); + priv->location = NULL; + priv->title = NULL; + + if (G_OBJECT_CLASS(kz_ie_parent_class)->dispose) + G_OBJECT_CLASS(kz_ie_parent_class)->dispose(object); +} + +GtkWidget * +kz_ie_new (void) +{ + return GTK_WIDGET(g_object_new(KZ_TYPE_IE, NULL)); +} + +static void +kz_ie_embed_location (GtkIEEmbed *ieembed, const gchar *location) +{ + KzIEPrivate *priv = KZ_IE_GET_PRIVATE(ieembed); + + if (priv->location) + g_free(priv->location); + priv->location = g_strdup(location); + g_signal_emit_by_name(ieembed, "kz-location"); +} + +static void +kz_ie_embed_title (GtkIEEmbed *ieembed, const gchar *title) +{ + KzIEPrivate *priv = KZ_IE_GET_PRIVATE(ieembed); + + if (priv->title) + g_free(priv->title); + priv->title = g_strdup(title); + g_signal_emit_by_name(ieembed, "kz-title"); +} + +static void +kz_ie_embed_progress (GtkIEEmbed *ieembed, + glong current_progress, + glong max_progress) +{ + KzIEPrivate *priv = KZ_IE_GET_PRIVATE(ieembed); + priv->current_progress = current_progress; + priv->max_progress = max_progress; + + g_signal_emit_by_name(ieembed, "kz-progress"); +} + +static void +kz_ie_embed_net_start (GtkIEEmbed *ieembed) +{ + g_signal_emit_by_name(ieembed, "kz-net-start"); +} + +static void +kz_ie_embed_net_stop (GtkIEEmbed *ieembed) +{ + if (GTK_IE_EMBED_CLASS(kz_ie_parent_class)->net_stop) + GTK_IE_EMBED_CLASS(kz_ie_parent_class)->net_stop(ieembed); + + g_signal_emit_by_name(ieembed, "kz-net-stop"); +} + +static KzEmbedEventMouse * +create_kz_embed_event_mouse (GtkIEEmbedDOMMouseEvent *event) +{ + KzEmbedEventMouse *kzevent; + + kzevent = (KzEmbedEventMouse *) kz_embed_event_new(KZ_EMBED_EVENT_MOUSE); + if (event->shift_key) + kzevent->modifier |= KZ_SHIFT_KEY; + if (event->control_key) + kzevent->modifier |= KZ_CTRL_KEY; + if (event->alt_key) + kzevent->modifier |= KZ_ALT_KEY; + if (event->meta_key) + kzevent->modifier |= KZ_META_KEY; + kzevent->x = event->x; + kzevent->y = event->y; + kzevent->button = event->button; + kzevent->cinfo.context = KZ_CONTEXT_NONE; + + if (event->target) { + const gchar *name; + name = gtk_ie_embed_dom_event_target_get_name(event->target); + if (!strcmp("a", name)) { + const gchar *value; + kzevent->cinfo.context = KZ_CONTEXT_LINK; + value = gtk_ie_embed_dom_event_target_get_attribute_value(event->target, + "href"); + kzevent->cinfo.link = g_strdup(value); + } + } + return kzevent; +} + +static gboolean +emit_mouse_signal (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event, + const gchar *signal_name) +{ + KzEmbedEventMouse *kzevent; + gint ret = FALSE; + + kzevent = create_kz_embed_event_mouse(event); + g_signal_emit_by_name(embed, signal_name, kzevent, &ret); + kz_embed_event_free((KzEmbedEvent *) kzevent); + + return ret; +} + +static gboolean +kz_ie_embed_dom_mouse_down (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) +{ + return emit_mouse_signal (embed, event, "kz-dom-mouse-down"); +} + +static gboolean +kz_ie_embed_dom_mouse_up (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) +{ + return emit_mouse_signal (embed, event, "kz-dom-mouse-up"); +} + +static gboolean +kz_ie_embed_dom_mouse_move (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) +{ + return emit_mouse_signal (embed, event, "kz-dom-mouse-move"); +} + +static gboolean +kz_ie_embed_dom_mouse_click (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) +{ + return emit_mouse_signal (embed, event, "kz-dom-mouse-click"); +} + +static void +kz_ie_load_url (KzEmbed *kzembed, const gchar *url) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_load_url(GTK_IE_EMBED(kzembed), url); +} + +static const gchar * +kz_ie_get_title (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), NULL); + + return KZ_IE_GET_PRIVATE(kzembed)->title; +} + +static const gchar * +kz_ie_get_location (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), NULL); + + return KZ_IE_GET_PRIVATE(kzembed)->location; +} + +static gchar * +kz_ie_ensure_title (KzEmbed *kzembed) +{ + const gchar *title; + + title = kz_ie_get_title(kzembed); + if (title) + return g_strdup(title); + + title = kz_ie_get_location(kzembed); + if (title) + return g_strdup(title); + + return g_strdup(_("No title")); +} + +static gdouble +kz_ie_get_progress (KzEmbed *kzembed) +{ + gdouble progress; + KzIEPrivate *priv; + + g_return_val_if_fail(KZ_IS_IE(kzembed), 0.0); + + priv = KZ_IE_GET_PRIVATE(kzembed); + + if (priv->max_progress <= 0 || + priv->current_progress <= 0) + { + return 0.0; + } + + progress = (gdouble) priv->current_progress + / (gdouble) priv->max_progress; + + return (progress < 1.0) ? progress : 1.0; +} + +static void +kz_ie_reload (KzEmbed *kzembed, KzEmbedReloadFlag flags) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_reload(GTK_IE_EMBED(kzembed), GTK_IE_EMBED_RELOAD_NORMAL); +} + + +static void +kz_ie_stop_load (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_stop(GTK_IE_EMBED(kzembed)); +} + + +static gboolean +kz_ie_is_loading (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); + + return gtk_ie_embed_is_loading(GTK_IE_EMBED(kzembed)); +} + + +static void +kz_ie_go_back (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_go_back(GTK_IE_EMBED(kzembed)); +} + + +static void +kz_ie_go_forward (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_go_forward(GTK_IE_EMBED(kzembed)); +} + + +static gboolean +kz_ie_can_go_back (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); + + return gtk_ie_embed_can_go_back(GTK_IE_EMBED(kzembed)); +} + + +static gboolean +kz_ie_can_go_forward (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); + + return gtk_ie_embed_can_go_forward(GTK_IE_EMBED(kzembed)); +} + +static gboolean +kz_ie_can_cut_selection (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); + + return gtk_ie_embed_can_cut_clipboard(GTK_IE_EMBED(kzembed)); +} + +static gboolean +kz_ie_can_copy_selection (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); + + return gtk_ie_embed_can_copy_clipboard(GTK_IE_EMBED(kzembed)); +} + +static gboolean +kz_ie_can_paste (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); + + return gtk_ie_embed_can_paste_clipboard(GTK_IE_EMBED(kzembed)); +} + +static void +kz_ie_cut_selection (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_cut_clipboard(GTK_IE_EMBED(kzembed)); +} + +static void +kz_ie_copy_selection (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_copy_clipboard(GTK_IE_EMBED(kzembed)); +} + +static void +kz_ie_paste (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_paste_clipboard(GTK_IE_EMBED(kzembed)); +} + +static void +kz_ie_select_all (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_select_all(GTK_IE_EMBED(kzembed)); +} + +static void +kz_ie_print (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_print(GTK_IE_EMBED(kzembed)); +} + + +static void +kz_ie_print_preview (KzEmbed *kzembed) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_print_preview(GTK_IE_EMBED(kzembed)); +} + +static void +kz_ie_set_text_size (KzEmbed *kzembed, int zoom, gboolean reflow) +{ + GtkIEEmbedFontSize size; + + g_return_if_fail(KZ_IS_IE(kzembed)); + + if (zoom > 400) + size = GTK_IE_EMBED_FONT_LARGEST; + else if (zoom > 200) + size = GTK_IE_EMBED_FONT_LARGE; + else if (zoom > 80) + size = GTK_IE_EMBED_FONT_MEDIUM; + else if (zoom > 50) + size = GTK_IE_EMBED_FONT_SMALL; + else + size = GTK_IE_EMBED_FONT_SMALLEST; + + gtk_ie_embed_set_font_size(GTK_IE_EMBED(kzembed), size); +} + +static int +kz_ie_get_text_size (KzEmbed *kzembed) +{ + GtkIEEmbedFontSize size; + gint ret_size; + + g_return_val_if_fail(KZ_IS_IE(kzembed), 100); + + size = gtk_ie_embed_get_font_size(GTK_IE_EMBED(kzembed)); + switch (size) + { + case GTK_IE_EMBED_FONT_LARGEST: + ret_size = 400; + break; + case GTK_IE_EMBED_FONT_LARGE: + ret_size = 200; + break; + case GTK_IE_EMBED_FONT_MEDIUM: + ret_size = 80; + break; + case GTK_IE_EMBED_FONT_SMALL: + ret_size = 50; + break; + case GTK_IE_EMBED_FONT_SMALLEST: + ret_size = 20; + break; + default: + ret_size = 100; + break; + } + + return ret_size; +} + +static void +kz_ie_set_encoding (KzEmbed *kzembed, const gchar *encoding) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + gtk_ie_embed_set_charset(GTK_IE_EMBED(kzembed), encoding); +} + +static void +kz_ie_get_encoding (KzEmbed *kzembed, gchar **encoding, gboolean *forced) +{ + g_return_if_fail(KZ_IS_IE(kzembed)); + + *encoding = gtk_ie_embed_get_charset(GTK_IE_EMBED(kzembed)); +} + +static guint +kz_ie_get_last_modified (KzEmbed *kzembed) +{ + gchar *string; + struct tm t = {0}; + + g_return_val_if_fail(KZ_IS_IE(kzembed), 0); + + string = gtk_ie_embed_get_last_modified(GTK_IE_EMBED(kzembed)); + strptime(string, "%m/%d/%C %H:%M:%S", &t); + g_free (string); + + return (guint) mktime(&t); +} + +static gchar * +kz_ie_get_selection_string (KzEmbed *kzembed) +{ + g_return_val_if_fail(KZ_IS_IE(kzembed), NULL); + + return gtk_ie_embed_get_selected_text(GTK_IE_EMBED(kzembed)); +} + Deleted: kazehakase/trunk/module/embed/ie/kz-ie.cpp =================================================================== --- kazehakase/trunk/module/embed/ie/kz-ie.cpp 2007-10-21 22:11:32 UTC (rev 3305) +++ kazehakase/trunk/module/embed/ie/kz-ie.cpp 2007-10-22 04:44:52 UTC (rev 3306) @@ -1,760 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - -/* - * Copyright (C) 2007 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.cpp 3111 2007-03-30 08:18:40Z makeinu $ - */ - -#include <glib/gi18n.h> - -#define __USE_XOPEN -#include <time.h> -#include "kazehakase.h" -#include "kz-ie.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 "kz-missing.h" - -typedef struct _KzIEPrivate KzIEPrivate; -struct _KzIEPrivate -{ - glong current_progress; - glong max_progress; - gchar *location; - gchar *title; -}; -#define KZ_IE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_IE, KzIEPrivate)) - -static GType kz_type_ie = 0; -static GtkIEEmbedClass *kz_ie_parent_class; - -GtkWidget *kz_ie_new (void); -static void kz_ie_class_init (KzIEClass *klass); -static void kz_ie_iface_init (KzEmbedIFace *iface); -static void kz_ie_init (KzIE *ie); -static void kz_ie_dispose (GObject *object); - -/* GtkIEEmbed signals */ -static void kz_ie_embed_location (GtkIEEmbed *ieembed, - const gchar *location); -static void kz_ie_embed_title (GtkIEEmbed *ieembed, - const gchar *title); -static void kz_ie_embed_progress (GtkIEEmbed *ieembed, - glong current_progress, - glong max_progress); -static void kz_ie_embed_net_start (GtkIEEmbed *ieembed); -static void kz_ie_embed_net_stop (GtkIEEmbed *ieembed); -static gboolean kz_ie_embed_dom_mouse_down (GtkIEEmbed *embed, - GtkIEEmbedDOMMouseEvent *event); -static gboolean kz_ie_embed_dom_mouse_up (GtkIEEmbed *embed, - GtkIEEmbedDOMMouseEvent *event); -static gboolean kz_ie_embed_dom_mouse_move (GtkIEEmbed *embed, - GtkIEEmbedDOMMouseEvent *event); -static gboolean kz_ie_embed_dom_mouse_click (GtkIEEmbed *embed, - GtkIEEmbedDOMMouseEvent *event); - -/* embed iface */ -static void kz_ie_load_url (KzEmbed *kzembed, - const gchar *url); -static const gchar *kz_ie_get_title (KzEmbed *kzembed); -static const gchar *kz_ie_get_location (KzEmbed *kzembed); -static gchar *kz_ie_ensure_title (KzEmbed *kzembed); -static gdouble kz_ie_get_progress (KzEmbed *kzembed); -static void kz_ie_reload (KzEmbed *kzembed, - KzEmbedReloadFlag flags); -static void kz_ie_stop_load (KzEmbed *kzembed); -static gboolean kz_ie_is_loading (KzEmbed *kzembed); -static void kz_ie_go_back (KzEmbed *kzembed); -static void kz_ie_go_forward (KzEmbed *kzembed); -static gboolean kz_ie_can_go_back (KzEmbed *kzembed); -static gboolean kz_ie_can_go_forward (KzEmbed *kzembed); -static gboolean kz_ie_can_cut_selection - (KzEmbed *kzembed); -static gboolean kz_ie_can_copy_selection - (KzEmbed *kzembed); -static gboolean kz_ie_can_paste (KzEmbed *kzembed); -static void kz_ie_cut_selection (KzEmbed *kzembed); -static void kz_ie_copy_selection (KzEmbed *kzembed); -static void kz_ie_paste (KzEmbed *kzembed); -static void kz_ie_select_all (KzEmbed *kzembed); -static void kz_ie_print (KzEmbed *kzembed); -static void kz_ie_print_preview (KzEmbed *kzembed); -static void kz_ie_zoom_set (KzEmbed *kzembed, - int zoom, - gboolean reflow); -static gint kz_ie_zoom_get (KzEmbed *kzembed); -static void kz_ie_set_text_size (KzEmbed *kzembed, - int zoom, - gboolean reflow); -static gint kz_ie_get_text_size (KzEmbed *kzembed); -static void kz_ie_set_encoding (KzEmbed *kzembed, - const gchar *encoding); -static void kz_ie_get_encoding (KzEmbed *kzembed, - gchar **encoding, - gboolean *forced); -static guint kz_ie_get_last_modified - (KzEmbed *kzembed); -static gchar *kz_ie_get_selection_string - (KzEmbed *kzembed); - -/* KzEmbedPrefs interfaces */ -/* no functions is implemented yet */ -static void kz_ie_prefs_iface_init (KzEmbedPrefsIFace *iface); - -void -kz_ie_register_type (GTypeModule *module) -{ - static const GTypeInfo kz_ie_info = - { - sizeof (KzIEClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) kz_ie_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (KzIE), - 0, /* n_preallocs */ - (GInstanceInitFunc) kz_ie_init, - }; - - const GInterfaceInfo kz_embed_info = - { - (GInterfaceInitFunc) kz_ie_iface_init, - NULL, - NULL - }; - - const GInterfaceInfo kz_embed_prefs_info = - { - (GInterfaceInitFunc) kz_ie_prefs_iface_init, - NULL, - NULL - }; - - kz_type_ie = g_type_module_register_type(module, - GTK_TYPE_IE_EMBED, - "KzIE", - &kz_ie_info, - (GTypeFlags)0); - - g_type_module_add_interface(module, - KZ_TYPE_IE, - KZ_TYPE_EMBED, - &kz_embed_info); - - g_type_module_add_interface(module, - KZ_TYPE_IE, - KZ_TYPE_EMBED_PREFS, - &kz_embed_prefs_info); -} - -GType -kz_ie_get_type (void) -{ - return kz_type_ie; -} - -static void -kz_ie_class_init (KzIEClass *klass) -{ - GObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkIEEmbedClass *ie_class; - - kz_ie_parent_class = GTK_IE_EMBED_CLASS(g_type_class_peek_parent(klass)); - object_class = G_OBJECT_CLASS(klass); - widget_class = GTK_WIDGET_CLASS(klass); - ie_class = GTK_IE_EMBED_CLASS(klass); - - object_class->dispose = kz_ie_dispose; - - ie_class->location = kz_ie_embed_location; - ie_class->title = kz_ie_embed_title; - ie_class->net_start = kz_ie_embed_net_start; - ie_class->net_stop = kz_ie_embed_net_stop; - ie_class->progress = kz_ie_embed_progress; - ie_class->dom_mouse_down = kz_ie_embed_dom_mouse_down; - ie_class->dom_mouse_move = kz_ie_embed_dom_mouse_move; - ie_class->dom_mouse_up = kz_ie_embed_dom_mouse_up; - ie_class->dom_mouse_click = kz_ie_embed_dom_mouse_click; - - g_type_class_add_private(object_class, sizeof(KzIEPrivate)); -} - - -static void -kz_ie_iface_init (KzEmbedIFace *iface) -{ - iface->load_url = kz_ie_load_url; - iface->view_source = NULL; - iface->is_loading = kz_ie_is_loading; - iface->get_title = kz_ie_get_title; - iface->get_location = kz_ie_get_location; - iface->ensure_title = kz_ie_ensure_title; - iface->get_link_message = NULL; - iface->get_progress = kz_ie_get_progress; - iface->can_cut_selection = kz_ie_can_cut_selection; - iface->can_copy_selection = kz_ie_can_copy_selection; - iface->can_paste = kz_ie_can_paste; - iface->cut_selection = kz_ie_cut_selection; - iface->copy_selection = kz_ie_copy_selection; - iface->paste = kz_ie_paste; - iface->select_all = kz_ie_select_all; - iface->get_selection_string = kz_ie_get_selection_string; - iface->find = NULL; - iface->incremental_search = NULL; - iface->selection_is_collapsed = NULL; - iface->get_links = NULL; - iface->copy_page = NULL; - iface->shistory_copy = NULL; - iface->shistory_get_pos = NULL; - iface->shistory_get_nth = NULL; - iface->reload = kz_ie_reload; - iface->stop_load = kz_ie_stop_load; - iface->go_back = kz_ie_go_back; - iface->go_forward = kz_ie_go_forward; - iface->can_go_back = kz_ie_can_go_back; - iface->can_go_forward = kz_ie_can_go_forward; - iface->can_go_nav_link = NULL; - iface->go_nav_link = NULL; - iface->append_nav_link = NULL; - iface->set_nav_link = NULL; - iface->set_nth_nav_link = NULL; - iface->get_nav_link = NULL; - iface->get_nth_nav_link = NULL; - iface->get_nav_links = NULL; - iface->go_history_index = NULL; - iface->do_command = NULL; - iface->can_do_command = NULL; - iface->get_lock = NULL; - iface->set_lock = NULL; - iface->get_body_text = NULL; -#if 0 - iface->get_selection_source = NULL; -#endif - iface->set_encoding = kz_ie_set_encoding; - iface->get_encoding = kz_ie_get_encoding; - iface->print = kz_ie_print; - iface->print_preview = kz_ie_print_preview; - 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_ie_set_text_size; - iface->zoom_get = kz_ie_get_text_size; - iface->set_text_size = kz_ie_set_text_size; - iface->get_text_size = kz_ie_get_text_size; - iface->get_html_with_contents = NULL; - iface->set_history = NULL; - iface->get_history = NULL; - iface->get_last_modified = kz_ie_get_last_modified; - iface->fine_scroll = NULL; - iface->page_up = NULL; - iface->page_down = NULL; - iface->get_allow_javascript = NULL; - iface->set_allow_javascript = NULL; - iface->get_allow_images = NULL; - iface->set_allow_images = NULL; -#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_ie_prefs_iface_init (KzEmbedPrefsIFace *iface) -{ - iface->init = NULL; /* kz_ie_prefs_init;*/ - iface->get_font_list = NULL; /* kz_ie_prefs_get_font_list; */ - iface->get_passwords = NULL; /* kz_ie_prefs_get_passwords; */ - iface->remove_passwords = NULL; /* kz_ie_prefs_remove_passwords; */ -} - -static void -kz_ie_init (KzIE *ie) -{ - KzIEPrivate *priv = KZ_IE_GET_PRIVATE (ie); - - priv->location = NULL; - priv->title = NULL; - - priv->current_progress = 0; - priv->max_progress =0; -} - -static void -kz_ie_dispose (GObject *object) -{ - KzIEPrivate *priv = KZ_IE_GET_PRIVATE(object); - - if (priv->location) - g_free(priv->location); - if (priv->title) - g_free(priv->title); - priv->location = NULL; - priv->title = NULL; - - if (G_OBJECT_CLASS(kz_ie_parent_class)->dispose) - G_OBJECT_CLASS(kz_ie_parent_class)->dispose(object); -} - -GtkWidget * -kz_ie_new (void) -{ - return GTK_WIDGET(g_object_new(KZ_TYPE_IE, NULL)); -} - -static void -kz_ie_embed_location (GtkIEEmbed *ieembed, const gchar *location) -{ - KzIEPrivate *priv = KZ_IE_GET_PRIVATE(ieembed); - - if (priv->location) - g_free(priv->location); - priv->location = g_strdup(location); - g_signal_emit_by_name(ieembed, "kz-location"); -} - -static void -kz_ie_embed_title (GtkIEEmbed *ieembed, const gchar *title) -{ - KzIEPrivate *priv = KZ_IE_GET_PRIVATE(ieembed); - - if (priv->title) - g_free(priv->title); - priv->title = g_strdup(title); - g_signal_emit_by_name(ieembed, "kz-title"); -} - -static void -kz_ie_embed_progress (GtkIEEmbed *ieembed, - glong current_progress, - glong max_progress) -{ - KzIEPrivate *priv = KZ_IE_GET_PRIVATE(ieembed); - priv->current_progress = current_progress; - priv->max_progress = max_progress; - - g_signal_emit_by_name(ieembed, "kz-progress"); -} - -static void -kz_ie_embed_net_start (GtkIEEmbed *ieembed) -{ - g_signal_emit_by_name(ieembed, "kz-net-start"); -} - -static void -kz_ie_embed_net_stop (GtkIEEmbed *ieembed) -{ - if (GTK_IE_EMBED_CLASS(kz_ie_parent_class)->net_stop) - GTK_IE_EMBED_CLASS(kz_ie_parent_class)->net_stop(ieembed); - - g_signal_emit_by_name(ieembed, "kz-net-stop"); -} - -static KzEmbedEventMouse * -create_kz_embed_event_mouse (GtkIEEmbedDOMMouseEvent *event) -{ - KzEmbedEventMouse *kzevent; - - kzevent = (KzEmbedEventMouse *) kz_embed_event_new(KZ_EMBED_EVENT_MOUSE); - if (event->shift_key) - kzevent->modifier |= KZ_SHIFT_KEY; - if (event->control_key) - kzevent->modifier |= KZ_CTRL_KEY; - if (event->alt_key) - kzevent->modifier |= KZ_ALT_KEY; - if (event->meta_key) - kzevent->modifier |= KZ_META_KEY; - kzevent->x = event->x; - kzevent->y = event->y; - kzevent->button = event->button; - kzevent->cinfo.context = KZ_CONTEXT_NONE; - - if (event->target) { - const gchar *name; - name = gtk_ie_embed_dom_event_target_get_name(event->target); - if (!strcmp("a", name)) { - const gchar *value; - kzevent->cinfo.context = KZ_CONTEXT_LINK; - value = gtk_ie_embed_dom_event_target_get_attribute_value(event->target, - "href"); - kzevent->cinfo.link = g_strdup(value); - } - } - return kzevent; -} - -static gboolean -emit_mouse_signal (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event, - const gchar *signal_name) -{ - KzEmbedEventMouse *kzevent; - gint ret = FALSE; - - kzevent = create_kz_embed_event_mouse(event); - g_signal_emit_by_name(embed, signal_name, kzevent, &ret); - kz_embed_event_free((KzEmbedEvent *) kzevent); - - return ret; -} - -static gboolean -kz_ie_embed_dom_mouse_down (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) -{ - return emit_mouse_signal (embed, event, "kz-dom-mouse-down"); -} - -static gboolean -kz_ie_embed_dom_mouse_up (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) -{ - return emit_mouse_signal (embed, event, "kz-dom-mouse-up"); -} - -static gboolean -kz_ie_embed_dom_mouse_move (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) -{ - return emit_mouse_signal (embed, event, "kz-dom-mouse-move"); -} - -static gboolean -kz_ie_embed_dom_mouse_click (GtkIEEmbed *embed, GtkIEEmbedDOMMouseEvent *event) -{ - return emit_mouse_signal (embed, event, "kz-dom-mouse-click"); -} - -static void -kz_ie_load_url (KzEmbed *kzembed, const gchar *url) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_load_url(GTK_IE_EMBED(kzembed), url); -} - -static const gchar * -kz_ie_get_title (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), NULL); - - return KZ_IE_GET_PRIVATE(kzembed)->title; -} - -static const gchar * -kz_ie_get_location (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), NULL); - - return KZ_IE_GET_PRIVATE(kzembed)->location; -} - -static gchar * -kz_ie_ensure_title (KzEmbed *kzembed) -{ - const gchar *title; - - title = kz_ie_get_title(kzembed); - if (title) - return g_strdup(title); - - title = kz_ie_get_location(kzembed); - if (title) - return g_strdup(title); - - return g_strdup(_("No title")); -} - -static gdouble -kz_ie_get_progress (KzEmbed *kzembed) -{ - gdouble progress; - KzIEPrivate *priv; - - g_return_val_if_fail(KZ_IS_IE(kzembed), 0.0); - - priv = KZ_IE_GET_PRIVATE(kzembed); - - if (priv->max_progress <= 0 || - priv->current_progress <= 0) - { - return 0.0; - } - - progress = (gdouble) priv->current_progress - / (gdouble) priv->max_progress; - - return (progress < 1.0) ? progress : 1.0; -} - -static void -kz_ie_reload (KzEmbed *kzembed, KzEmbedReloadFlag flags) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_reload(GTK_IE_EMBED(kzembed), GTK_IE_EMBED_RELOAD_NORMAL); -} - - -static void -kz_ie_stop_load (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_stop(GTK_IE_EMBED(kzembed)); -} - - -static gboolean -kz_ie_is_loading (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); - - return gtk_ie_embed_is_loading(GTK_IE_EMBED(kzembed)); -} - - -static void -kz_ie_go_back (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_go_back(GTK_IE_EMBED(kzembed)); -} - - -static void -kz_ie_go_forward (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_go_forward(GTK_IE_EMBED(kzembed)); -} - - -static gboolean -kz_ie_can_go_back (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); - - return gtk_ie_embed_can_go_back(GTK_IE_EMBED(kzembed)); -} - - -static gboolean -kz_ie_can_go_forward (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); - - return gtk_ie_embed_can_go_forward(GTK_IE_EMBED(kzembed)); -} - -static gboolean -kz_ie_can_cut_selection (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); - - return gtk_ie_embed_can_cut_clipboard(GTK_IE_EMBED(kzembed)); -} - -static gboolean -kz_ie_can_copy_selection (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); - - return gtk_ie_embed_can_copy_clipboard(GTK_IE_EMBED(kzembed)); -} - -static gboolean -kz_ie_can_paste (KzEmbed *kzembed) -{ - g_return_val_if_fail(KZ_IS_IE(kzembed), FALSE); - - return gtk_ie_embed_can_paste_clipboard(GTK_IE_EMBED(kzembed)); -} - -static void -kz_ie_cut_selection (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_cut_clipboard(GTK_IE_EMBED(kzembed)); -} - -static void -kz_ie_copy_selection (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_copy_clipboard(GTK_IE_EMBED(kzembed)); -} - -static void -kz_ie_paste (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_paste_clipboard(GTK_IE_EMBED(kzembed)); -} - -static void -kz_ie_select_all (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_select_all(GTK_IE_EMBED(kzembed)); -} - -static void -kz_ie_print (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_print(GTK_IE_EMBED(kzembed)); -} - - -static void -kz_ie_print_preview (KzEmbed *kzembed) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_print_preview(GTK_IE_EMBED(kzembed)); -} - -static void -kz_ie_set_text_size (KzEmbed *kzembed, int zoom, gboolean reflow) -{ - GtkIEEmbedFontSize size; - - g_return_if_fail(KZ_IS_IE(kzembed)); - - if (zoom > 400) - size = GTK_IE_EMBED_FONT_LARGEST; - else if (zoom > 200) - size = GTK_IE_EMBED_FONT_LARGE; - else if (zoom > 80) - size = GTK_IE_EMBED_FONT_MEDIUM; - else if (zoom > 50) - size = GTK_IE_EMBED_FONT_SMALL; - else - size = GTK_IE_EMBED_FONT_SMALLEST; - - gtk_ie_embed_set_font_size(GTK_IE_EMBED(kzembed), size); -} - -static int -kz_ie_get_text_size (KzEmbed *kzembed) -{ - GtkIEEmbedFontSize size; - gint ret_size; - - g_return_val_if_fail(KZ_IS_IE(kzembed), 100); - - size = gtk_ie_embed_get_font_size(GTK_IE_EMBED(kzembed)); - switch (size) - { - case GTK_IE_EMBED_FONT_LARGEST: - ret_size = 400; - break; - case GTK_IE_EMBED_FONT_LARGE: - ret_size = 200; - break; - case GTK_IE_EMBED_FONT_MEDIUM: - ret_size = 80; - break; - case GTK_IE_EMBED_FONT_SMALL: - ret_size = 50; - break; - case GTK_IE_EMBED_FONT_SMALLEST: - ret_size = 20; - break; - default: - ret_size = 100; - break; - } - - return ret_size; -} - -static void -kz_ie_set_encoding (KzEmbed *kzembed, const gchar *encoding) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - gtk_ie_embed_set_charset(GTK_IE_EMBED(kzembed), encoding); -} - -static void -kz_ie_get_encoding (KzEmbed *kzembed, gchar **encoding, gboolean *forced) -{ - g_return_if_fail(KZ_IS_IE(kzembed)); - - *encoding = gtk_ie_embed_get_charset(GTK_IE_EMBED(kzembed)); -} - -static guint -kz_ie_get_last_modified (KzEmbed *kzembed) -{ - gchar *string; - struct tm t = {0}; - - g_return_val_if_fail(KZ_IS_IE(kzembed), 0); - - string = gtk_ie_embed_get_last_modified(GTK_IE_EMBED(kzembed)); - strptime(string, "%m/%d/%C %H:%M:%S", &t); - g_free (string); - - return (guint) mktime(&t); -} - -static gchar * -kz_ie_get_selection_string (KzEmbed *kzembed) -{ - gchar *string = NULL; - g_return_val_if_fail(KZ_IS_IE(kzembed), NULL); - - return gtk_ie_embed_get_selected_text(GTK_IE_EMBED(kzembed)); -} -