diff options
Diffstat (limited to 'embed/ephy-embed.c')
-rw-r--r-- | embed/ephy-embed.c | 608 |
1 files changed, 608 insertions, 0 deletions
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c new file mode 100644 index 000000000..cb513f95c --- /dev/null +++ b/embed/ephy-embed.c @@ -0,0 +1,608 @@ +/* + * Copyright (C) 2000, 2001, 2002 Marco Pesenti Gritti + * + * 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. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "ephy-marshal.h" +#include "ephy-embed.h" + +#include "mozilla-embed.h" +#include "mozilla-embed-shell.h" + +enum +{ + NEW_WINDOW, + LINK_MESSAGE, + FAVICON, + JS_STATUS, + LOCATION, + TITLE, + PROGRESS, + NET_STATE, + VISIBILITY, + DESTROY_BRSR, + OPEN_URI, + SIZE_TO, + DOM_MOUSE_CLICK, + DOM_MOUSE_DOWN, + SECURITY_CHANGE, + ZOOM_CHANGE, + LAST_SIGNAL +}; + +static void +ephy_embed_base_init (gpointer base_class); + +struct EphyEmbedPrivate +{ + gpointer dummy; +}; + +static guint ephy_embed_signals[LAST_SIGNAL] = { 0 }; + +GType +ephy_embed_get_type (void) +{ + static GType ephy_embed_type = 0; + + if (ephy_embed_type == 0) + { + static const GTypeInfo our_info = + { + sizeof (EphyEmbedClass), + ephy_embed_base_init, + NULL, + }; + + ephy_embed_type = g_type_register_static (G_TYPE_INTERFACE, + "EphyEmbed", + &our_info, + (GTypeFlags)0); + } + + return ephy_embed_type; +} + +static void +ephy_embed_base_init (gpointer g_class) +{ + static gboolean initialized = FALSE; + + if (! initialized) + { + ephy_embed_signals[NEW_WINDOW] = + g_signal_new ("ge_new_window", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, new_window), + NULL, NULL, + ephy_marshal_VOID__POINTER_INT, + G_TYPE_NONE, + 2, + G_TYPE_POINTER, + G_TYPE_INT); + ephy_embed_signals[LINK_MESSAGE] = + g_signal_new ("ge_link_message", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, link_message), + NULL, NULL, + ephy_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING); + ephy_embed_signals[FAVICON] = + g_signal_new ("ge_favicon", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, favicon), + NULL, NULL, + ephy_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING); + ephy_embed_signals[JS_STATUS] = + g_signal_new ("ge_js_status", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, js_status), + NULL, NULL, + ephy_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING); + ephy_embed_signals[LOCATION] = + g_signal_new ("ge_location", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, location), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + ephy_embed_signals[TITLE] = + g_signal_new ("ge_title", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, title), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + ephy_embed_signals[PROGRESS] = + g_signal_new ("ge_progress", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, progress), + NULL, NULL, + ephy_marshal_VOID__STRING_INT_INT, + G_TYPE_NONE, + 3, + G_TYPE_STRING, + G_TYPE_INT, + G_TYPE_INT); + ephy_embed_signals[NET_STATE] = + g_signal_new ("ge_net_state", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, net_state), + NULL, NULL, + ephy_marshal_VOID__STRING_INT, + G_TYPE_NONE, + 2, + G_TYPE_STRING, + G_TYPE_INT); + ephy_embed_signals[VISIBILITY] = + g_signal_new ("ge_visibility", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, visibility), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, + G_TYPE_BOOLEAN); + ephy_embed_signals[DESTROY_BRSR] = + g_signal_new ("ge_destroy_brsr", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (EphyEmbedClass, destroy_brsr), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + ephy_embed_signals[OPEN_URI] = + g_signal_new ("ge_open_uri", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (EphyEmbedClass, open_uri), + NULL, NULL, + ephy_marshal_INT__STRING, + G_TYPE_INT, + 1, + G_TYPE_STRING); + ephy_embed_signals[SIZE_TO] = + g_signal_new ("ge_size_to", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (EphyEmbedClass, size_to), + NULL, NULL, + ephy_marshal_VOID__INT_INT, + G_TYPE_NONE, + 2, + G_TYPE_INT, + G_TYPE_INT); + ephy_embed_signals[DOM_MOUSE_DOWN] = + g_signal_new ("ge_dom_mouse_down", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (EphyEmbedClass, dom_mouse_down), + NULL, NULL, + ephy_marshal_INT__OBJECT, + G_TYPE_INT, + 1, + G_TYPE_POINTER); + ephy_embed_signals[DOM_MOUSE_CLICK] = + g_signal_new ("ge_dom_mouse_click", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (EphyEmbedClass, dom_mouse_click), + NULL, NULL, + ephy_marshal_INT__OBJECT, + G_TYPE_INT, + 1, + G_TYPE_POINTER); + ephy_embed_signals[SECURITY_CHANGE] = + g_signal_new ("ge_security_change", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (EphyEmbedClass, security_change), + NULL, NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT); + ephy_embed_signals[ZOOM_CHANGE] = + g_signal_new ("ge_zoom_change", + EPHY_EMBED_TYPE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (EphyEmbedClass, zoom_change), + NULL, NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT); + } +} + +EphyEmbed * +ephy_embed_new (GObject *shell) +{ + if (IS_MOZILLA_EMBED_SHELL (shell)) + { + return EPHY_EMBED (g_object_new + (MOZILLA_EMBED_TYPE, NULL)); + } + + g_assert_not_reached (); + + return NULL; +} + +void +ephy_embed_get_capabilities (EphyEmbed *embed, + EmbedCapabilities *caps) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + klass->get_capabilities (embed, caps); +} + +gresult +ephy_embed_load_url (EphyEmbed *embed, + const char *url) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->load_url (embed, url); +} + +gresult +ephy_embed_stop_load (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->stop_load (embed); +} + +gresult +ephy_embed_can_go_back (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->can_go_back (embed); +} + +gresult +ephy_embed_can_go_forward (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->can_go_forward (embed); +} + +gresult +ephy_embed_can_go_up (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->can_go_up (embed); +} + +gresult +ephy_embed_get_go_up_list (EphyEmbed *embed, GSList **l) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->get_go_up_list (embed, l); +} + +gresult +ephy_embed_go_back (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->go_back (embed); +} + +gresult +ephy_embed_go_forward (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->go_forward (embed); +} + +gresult +ephy_embed_go_up (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->go_up (embed); +} + +gresult +ephy_embed_render_data (EphyEmbed *embed, + const char *data, + guint32 len, + const char *base_uri, + const char *mime_type) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->render_data (embed, data, len, base_uri, mime_type); +} + +gresult +ephy_embed_open_stream (EphyEmbed *embed, + const char *base_uri, + const char *mime_type) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->open_stream (embed, base_uri, mime_type); +} + +gresult +ephy_embed_append_data (EphyEmbed *embed, + const char *data, + guint32 len) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->append_data (embed, data, len); +} + +gresult +ephy_embed_close_stream (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->close_stream (embed); +} + +gresult +ephy_embed_get_title (EphyEmbed *embed, + char **title) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->get_title (embed, title); +} + +gresult +ephy_embed_get_location (EphyEmbed *embed, + gboolean toplevel, + gboolean requested, + char **location) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->get_location (embed, toplevel, requested, location); +} + +gresult +ephy_embed_reload (EphyEmbed *embed, + EmbedReloadFlags flags) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->reload (embed, flags); +} + +gresult +ephy_embed_copy_page (EphyEmbed *dest, + EphyEmbed *source, + EmbedDisplayType display_type) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (dest); + return klass->copy_page (dest, source, display_type); +} + +gresult +ephy_embed_grab_focus (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->grab_focus (embed); +} + +gresult +ephy_embed_get_link_tags (EphyEmbed *embed, + const char *link_type, + GList **tags) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->get_link_tags (embed, link_type, tags); +} + +gresult +ephy_embed_zoom_set (EphyEmbed *embed, + int zoom, + gboolean reflow) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->zoom_set (embed, zoom, reflow); +} + +gresult +ephy_embed_zoom_get (EphyEmbed *embed, + int *zoom) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->zoom_get (embed, zoom); +} + +gresult +ephy_embed_selection_can_cut (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->selection_can_cut (embed); +} + +gresult +ephy_embed_selection_can_copy (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->selection_can_copy (embed); +} + +gresult +ephy_embed_can_paste (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->can_paste (embed); +} + +gresult +ephy_embed_select_all (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->select_all (embed); +} + +gresult +ephy_embed_selection_cut (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->selection_cut (embed); +} + +gresult +ephy_embed_selection_copy (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->selection_copy (embed); +} + +gresult +ephy_embed_paste (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->paste (embed); +} + +gresult +ephy_embed_shistory_count (EphyEmbed *embed, + int *count) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->shistory_count (embed, count); +} + +gresult +ephy_embed_shistory_get_nth (EphyEmbed *embed, + int nth, + gboolean is_relative, + char **url, + char **title) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->shistory_get_nth (embed, nth, is_relative, url, title); +} + +gresult +ephy_embed_shistory_get_pos (EphyEmbed *embed, + int *pos) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->shistory_get_pos (embed, pos); +} + +gresult +ephy_embed_shistory_go_nth (EphyEmbed *embed, + int nth) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->shistory_go_nth (embed, nth); +} + +gboolean +ephy_embed_shistory_copy (EphyEmbed *source, + EphyEmbed *dest) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (source); + return klass->shistory_copy (source, dest); +} + +gresult +ephy_embed_scroll (EphyEmbed *embed, + EmbedScrollDirection direction) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->scroll (embed, direction); +} + +gresult +ephy_embed_fine_scroll (EphyEmbed *embed, + int horiz, int vert) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->fine_scroll (embed, horiz, vert); +} + +gresult +ephy_embed_get_security_level (EphyEmbed *embed, + EmbedSecurityLevel *level, + char **description) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->get_security_level (embed, level, description); +} + +gresult +ephy_embed_find (EphyEmbed *embed, + EmbedFindInfo *info) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->find (embed, info); +} + +gresult +ephy_embed_set_charset (EphyEmbed *embed, + const char *charset) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->set_charset (embed, charset); +} + +gresult +ephy_embed_print (EphyEmbed *embed, + EmbedPrintInfo *info) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->print (embed, info); +} + +gresult +ephy_embed_print_preview_close (EphyEmbed *embed) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->print_preview_close (embed); +} + +gresult +ephy_embed_print_preview_num_pages (EphyEmbed *embed, gint *retNum) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->print_preview_num_pages (embed, retNum); +} + +gresult +ephy_embed_print_preview_navigate (EphyEmbed *embed, + EmbedPrintPreviewNavType navType, + gint pageNum) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->print_preview_navigate (embed, navType, pageNum); +} + |