aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-nautilus-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ephy-nautilus-view.c')
-rw-r--r--src/ephy-nautilus-view.c377
1 files changed, 23 insertions, 354 deletions
diff --git a/src/ephy-nautilus-view.c b/src/ephy-nautilus-view.c
index 897d67af3..ee0e78cfe 100644
--- a/src/ephy-nautilus-view.c
+++ b/src/ephy-nautilus-view.c
@@ -22,15 +22,14 @@
#include <bonobo/bonobo-zoomable.h>
#include <bonobo/bonobo-ui-util.h>
#include <string.h>
+
#include "ephy-embed-popup-control.h"
#include "ephy-nautilus-view.h"
#include "ephy-embed.h"
#include "ephy-embed-utils.h"
#include "find-dialog.h"
#include "print-dialog.h"
-#include "ephy-prefs.h"
#include "ephy-zoom.h"
-#include "eel-gconf-extensions.h"
#include "ephy-debug.h"
static void gnv_embed_location_cb (EphyEmbed *embed,
@@ -89,16 +88,16 @@ static void gnv_cmd_edit_find (BonoboUIComponent *uic,
/* popups */
-static EphyNautilusView *gnv_view_from_popup (EphyEmbedPopup *popup);
+static EphyNautilusView *gnv_view_from_popup (EphyEmbedPopupControl*popup);
static void gnv_popup_cmd_new_window (BonoboUIComponent *uic,
- EphyEmbedPopup *popup,
+ EphyEmbedPopupControl*popup,
const char* verbname);
static void gnv_popup_cmd_image_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopup *popup,
+ EphyEmbedPopupControl*popup,
const char* verbname);
static void gnv_popup_cmd_frame_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopup *popup,
+ EphyEmbedPopupControl*popup,
const char* verbname);
struct EphyNautilusViewPrivate {
@@ -107,10 +106,6 @@ struct EphyNautilusViewPrivate {
char *location;
int load_percent;
- /*
- BonoboPropertyBag *property_bag;
- */
-
EphyEmbedPopupControl *popup;
BonoboUIComponent *popup_ui;
BonoboControl *control;
@@ -159,59 +154,25 @@ ephy_nautilus_view_instance_init (EphyNautilusView *view)
g_object_ref (G_OBJECT (ephy_shell));
g_signal_connect (view->priv->embed, "ge_link_message",
- GTK_SIGNAL_FUNC (gnv_embed_link_message_cb),
+ G_CALLBACK (gnv_embed_link_message_cb),
view);
g_signal_connect (view->priv->embed, "ge_location",
- GTK_SIGNAL_FUNC (gnv_embed_location_cb),
+ G_CALLBACK (gnv_embed_location_cb),
view);
g_signal_connect (view->priv->embed, "ge_title",
- GTK_SIGNAL_FUNC (gnv_embed_title_cb),
- view);
-/*
- g_signal_connect (view->priv->embed, "ge_js_status",
- GTK_SIGNAL_FUNC (gnv_embed_js_status_cb),
+ G_CALLBACK (gnv_embed_title_cb),
view);
- g_signal_connect (view->priv->embed, "ge_progress",
- GTK_SIGNAL_FUNC (gnv_embed_progress_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_net_state",
- GTK_SIGNAL_FUNC (gnv_embed_net_state_cb),
- view);
-*/
g_signal_connect (view->priv->embed, "ge_new_window",
- GTK_SIGNAL_FUNC (gnv_embed_new_window_cb),
- view);
-/*
- g_signal_connect (view->priv->embed, "ge_visibility",
- GTK_SIGNAL_FUNC (gnv_embed_visibility_cb),
+ G_CALLBACK (gnv_embed_new_window_cb),
view);
- g_signal_connect (view->priv->embed, "ge_destroy_brsr",
- GTK_SIGNAL_FUNC (gnv_embed_destroy_brsr_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_open_uri",
- GTK_SIGNAL_FUNC (gnv_embed_open_uri_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_size_to",
- GTK_SIGNAL_FUNC (gnv_embed_size_to_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_dom_mouse_click",
- GTK_SIGNAL_FUNC (gnv_embed_dom_mouse_click_cb),
- view);
-*/
g_signal_connect (view->priv->embed, "ge_dom_mouse_click",
- GTK_SIGNAL_FUNC (gnv_embed_dom_mouse_click_cb),
+ G_CALLBACK (gnv_embed_dom_mouse_click_cb),
view);
g_signal_connect (view->priv->embed, "ge_context_menu",
- GTK_SIGNAL_FUNC (gnv_embed_context_menu_cb),
- view);
-
-/*
- g_signal_connect (view->priv->embed, "ge_security_change",
- GTK_SIGNAL_FUNC (gnv_embed_security_change_cb),
+ G_CALLBACK (gnv_embed_context_menu_cb),
view);
-*/
g_signal_connect (view->priv->embed, "ge_zoom_change",
- GTK_SIGNAL_FUNC (gnv_embed_zoom_change_cb),
+ G_CALLBACK (gnv_embed_zoom_change_cb),
view);
w = GTK_WIDGET (view->priv->embed);
@@ -276,7 +237,8 @@ ephy_nautilus_view_instance_init (EphyNautilusView *view)
"nautilus-epiphany-view.xml",
"EphyNautilusView", NULL);
p->popup = ephy_embed_popup_control_new (p->control);
- ephy_embed_popup_connect_verbs (EPHY_EMBED_POPUP (p->popup), p->popup_ui);
+ ephy_embed_popup_control_connect_verbs
+ (EPHY_EMBED_POPUP_CONTROL (p->popup), p->popup_ui);
g_object_set_data (G_OBJECT (p->popup), "NautilisView", view);
bonobo_ui_component_add_verb_list_with_data (p->popup_ui, ephy_popup_verbs, p->popup);
@@ -358,8 +320,8 @@ gnv_embed_context_menu_cb (EphyEmbed *embed,
EmbedEventContext context;
ephy_embed_event_get_context (event, &context);
- ephy_embed_popup_set_event (EPHY_EMBED_POPUP (p->popup), event);
- ephy_embed_popup_show (EPHY_EMBED_POPUP (p->popup), embed);
+ ephy_embed_popup_control_set_event (p->popup, event);
+ ephy_embed_popup_control_show (p->popup, embed);
}
static void
@@ -406,15 +368,8 @@ gnv_embed_location_cb (EphyEmbed *embed, EphyNautilusView *view)
nautilus_view_report_location_change (NAUTILUS_VIEW (view), new_uri, NULL, new_uri);
- /* TODO, FIXME
- nautilus_view_report_redirect (view, p->location, new_uri, NULL, new_uri);
- */
-
-
g_free (p->location);
p->location = new_uri;
-
-
}
static void
@@ -490,7 +445,7 @@ gnv_bonobo_control_activate_cb (BonoboControl *control, gboolean state, EphyNaut
}
static EphyNautilusView *
-gnv_view_from_popup (EphyEmbedPopup *popup)
+gnv_view_from_popup (EphyEmbedPopupControl*popup)
{
return g_object_get_data (G_OBJECT (popup), "NautilisView");
}
@@ -498,7 +453,7 @@ gnv_view_from_popup (EphyEmbedPopup *popup)
static void
gnv_popup_cmd_new_window (BonoboUIComponent *uic,
- EphyEmbedPopup *popup,
+ EphyEmbedPopupControl*popup,
const char* verbname)
{
EphyEmbedEvent *info;
@@ -507,7 +462,7 @@ gnv_popup_cmd_new_window (BonoboUIComponent *uic,
view = gnv_view_from_popup (popup);
- info = ephy_embed_popup_get_event (popup);
+ info = ephy_embed_popup_control_get_event (popup);
ephy_embed_event_get_property (info, "link", &value);
@@ -517,7 +472,7 @@ gnv_popup_cmd_new_window (BonoboUIComponent *uic,
static void
gnv_popup_cmd_image_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopup *popup,
+ EphyEmbedPopupControl*popup,
const char* verbname)
{
EphyEmbedEvent *info;
@@ -526,7 +481,7 @@ gnv_popup_cmd_image_in_new_window (BonoboUIComponent *uic,
view = gnv_view_from_popup (popup);
- info = ephy_embed_popup_get_event (popup);
+ info = ephy_embed_popup_control_get_event (popup);
ephy_embed_event_get_property (info, "image", &value);
@@ -536,7 +491,7 @@ gnv_popup_cmd_image_in_new_window (BonoboUIComponent *uic,
static void
gnv_popup_cmd_frame_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopup *popup,
+ EphyEmbedPopupControl*popup,
const char* verbname)
{
EphyEmbedEvent *info;
@@ -545,7 +500,7 @@ gnv_popup_cmd_frame_in_new_window (BonoboUIComponent *uic,
view = gnv_view_from_popup (popup);
- info = ephy_embed_popup_get_event (popup);
+ info = ephy_embed_popup_control_get_event (popup);
ephy_embed_get_location (view->priv->embed, FALSE, &location);
@@ -583,11 +538,6 @@ gnv_cmd_file_print (BonoboUIComponent *uic,
dialog = print_dialog_new (p->embed, NULL);
- //g_signal_connect (G_OBJECT(dialog),
- // "preview",
- // G_CALLBACK (print_dialog_preview_cb),
- // window);
-
ephy_dialog_set_modal (dialog, TRUE);
ephy_dialog_show (dialog);
@@ -677,284 +627,3 @@ gnv_embed_zoom_change_cb (EphyNautilusView *embed,
bonobo_zoomable_report_zoom_level_changed (view->priv->zoomable,
new_zoom, NULL);
}
-
-
-#ifdef IM_TOO_LAZY_TO_MOVE_THIS_TO_ANOTHER_FILE
-
-
-/* property bag properties */
-enum {
- ICON_NAME,
- COMPONENT_INFO
-};
-
-
-static void
-get_bonobo_properties (BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer callback_data)
-{
- EphyNautilusView *content_view;
-
- content_view = (EphyNautilusView*) callback_data;
-
- switch (arg_id) {
- case ICON_NAME:
- if (!strncmp (content_view->priv->uri, "man:", 4)) {
- BONOBO_ARG_SET_STRING (arg, "manual");
- } else if (!strncmp (content_view->priv->uri, "http:", 5)) {
- BONOBO_ARG_SET_STRING (arg, "i-web");
- } else if (!strncmp (content_view->priv->uri, "https:", 6)) {
- /* FIXME: put a nice icon for secure sites */
- BONOBO_ARG_SET_STRING (arg, "i-web");
- } else {
- BONOBO_ARG_SET_STRING (arg, "");
- }
- break;
-
- case COMPONENT_INFO:
- BONOBO_ARG_SET_STRING (arg, "");
- break;
-
- default:
- g_warning ("Unhandled arg %d", arg_id);
- break;
- }
-}
-
-/* there are no settable properties, so complain if someone tries to set one */
-static void
-set_bonobo_properties (BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer callback_data)
-{
- g_warning ("Bad Property set on view: property ID %d",
- arg_id);
-}
-
-static void
-ephy_nautilus_view_initialize (EphyNautilusView *view)
-{
-
-
-#ifdef NOT_PORTED
- bonobo_control_set_properties (nautilus_view_get_bonobo_control (view->priv->nautilus_view),
- view->priv->property_bag);
-#endif
- bonobo_property_bag_add (view->priv->property_bag, "icon_name", ICON_NAME,
- BONOBO_ARG_STRING, NULL,
- _("name of icon for the mozilla view"), 0);
- bonobo_property_bag_add (view->priv->property_bag, "summary_info", COMPONENT_INFO,
- BONOBO_ARG_STRING, NULL,
- _("mozilla summary info"), 0);
-}
-
-
- /* free the property bag */
- if (view->priv->property_bag != NULL) {
- bonobo_object_unref (BONOBO_OBJECT (view->priv->property_bag));
- view->priv->property_bag = NULL;
- }
-
-}
-
-
-
-void
-ephy_nautilus_view_report_load_progress (EphyNautilusView *view,
- double value)
-{
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
-
- if (value < 0.0) value = 0.0;
- if (value > 1.0) value = 1.0;
-
- nautilus_view_report_load_progress (view->priv->nautilus_view, value);
-}
-
-/***********************************************************************************/
-
-/**
- * vfs_open_cb
- *
- * Callback for gnome_vfs_async_open. Attempt to read data from handle
- * and pass to mozilla streaming callback.
- *
- **/
-static void
-vfs_open_cb (GnomeVFSAsyncHandle *handle, GnomeVFSResult result, gpointer data)
-{
- EphyNautilusView *view = data;
-
- LOG ("+%s GnomeVFSResult: %u", G_GNUC_FUNCTION, (unsigned)result)
-
- if (result != GNOME_VFS_OK)
- {
- gtk_moz_embed_close_stream (GTK_MOZ_EMBED (view->priv->embed->mozembed));
- /* NOTE: the view may go away after a call to report_load_failed */
- LOG (">nautilus_view_report_load_failed")
- nautilus_view_report_load_failed (view->priv->nautilus_view);
- } else {
- if (view->priv->vfs_read_buffer == NULL) {
- view->priv->vfs_read_buffer = g_malloc (VFS_READ_BUFFER_SIZE);
- }
- gtk_moz_embed_open_stream (GTK_MOZ_EMBED (view->priv->embed->mozembed), "file:///", "text/html");
- gnome_vfs_async_read (handle, view->priv->vfs_read_buffer, VFS_READ_BUFFER_SIZE, vfs_read_cb, view);
- }
- LOG ("-%s", G_GNUC_FUNCTION);
-}
-
-/**
- * vfs_read_cb:
- *
- * Read data from buffer and copy into mozilla stream.
- **/
-
-static void
-vfs_read_cb (GnomeVFSAsyncHandle *handle, GnomeVFSResult result, gpointer buffer,
- GnomeVFSFileSize bytes_requested,
- GnomeVFSFileSize bytes_read,
- gpointer data)
-{
- EphyNautilusView *view = data;
-
- LOG ("+%s %ld/%ld bytes", G_GNUC_FUNCTION, (long)bytes_requested, (long) bytes_read)
-
- if (bytes_read != 0) {
- gtk_moz_embed_append_data (GTK_MOZ_EMBED (view->priv->embed->mozembed), buffer, bytes_read);
- }
-
- if (bytes_read == 0 || result != GNOME_VFS_OK) {
- gtk_moz_embed_close_stream (GTK_MOZ_EMBED (view->priv->embed->mozembed));
- view->priv->vfs_handle = NULL;
- g_free (view->priv->vfs_read_buffer);
- view->priv->vfs_read_buffer = NULL;
-
- gnome_vfs_async_close (handle, (GnomeVFSAsyncCloseCallback) gtk_true, NULL);
-
- LOG (">nautilus_view_report_load_complete")
- nautilus_view_report_load_complete (view->priv->nautilus_view);
-
- LOG ("=%s load complete", G_GNUC_FUNCTION)
- } else {
- gnome_vfs_async_read (handle, view->priv->vfs_read_buffer, VFS_READ_BUFFER_SIZE, vfs_read_cb, view);
- }
-
- LOG ("-%s", G_GNUC_FUNCTION)
-}
-
-/***********************************************************************************/
-
-static void
-cancel_pending_vfs_operation (EphyNautilusView *view)
-{
- if (view->priv->vfs_handle != NULL) {
- gnome_vfs_async_cancel (view->priv->vfs_handle);
- gtk_moz_embed_close_stream (GTK_MOZ_EMBED (view->priv->embed->mozembed));
- }
-
- view->priv->vfs_handle = NULL;
- g_free (view->priv->vfs_read_buffer);
- view->priv->vfs_read_buffer = NULL;
-}
-
-
-/* this takes a "nautilus" uri, not a "mozilla" uri and uses (sometimes) GnomeVFS */
-static void
-navigate_mozilla_to_nautilus_uri (EphyNautilusView *view,
- const char *uri)
-{
- char *old_uri;
-
- cancel_pending_vfs_operation (view);
-
- if (!GTK_WIDGET_REALIZED (view->priv->embed->mozembed)) {
-
- /* Doing certain things to gtkmozembed before
- * the widget has realized (specifically, opening
- * content streams) can cause crashes. To avoid
- * this, we postpone all navigations
- * until the widget has realized (we believe
- * premature realization may cause other issues)
- */
-
- LOG ("=%s: Postponing navigation request to widget realization", G_GNUC_FUNCTION)
- /* Note that view->priv->uri is still set below */
- } else {
- if (should_mozilla_load_uri_directly (uri)) {
-
- /* See if the current URI is the same as what mozilla already
- * has. If so, issue a reload rather than a load.
- * We ask mozilla for it's uri rather than using view->priv->uri because,
- * from time to time, our understanding of mozilla's URI can become inaccurate
- * (in particular, certain errors may cause embedded mozilla to not change
- * locations)
- */
-
- old_uri = view->priv->embed->location;
-
- if (old_uri != NULL && uris_identical (uri, old_uri)) {
- LOG ("=%s uri's identical, telling ephy to reload", G_GNUC_FUNCTION)
- embed_reload (view->priv->embed,
- GTK_MOZ_EMBED_FLAG_RELOADBYPASSCACHE);
- } else {
- embed_load_url (view->priv->embed, uri);
- }
-
- } else {
- LOG ("=%s loading URI via gnome-vfs", G_GNUC_FUNCTION)
- gnome_vfs_async_open (&(view->priv->vfs_handle), uri,
- GNOME_VFS_OPEN_READ, GNOME_VFS_PRIORITY_DEFAULT,
- vfs_open_cb, view);
- }
- }
-
- g_free (view->priv->uri);
- view->priv->uri = g_strdup (uri);
-
- LOG ("=%s current URI is now '%s'", G_GNUC_FUNCTION, view->priv->uri)
-}
-
-/*
- * This a list of URI schemes that mozilla should load directly, rather than load through gnome-vfs
- */
-static gboolean
-should_mozilla_load_uri_directly (const char *uri)
-{
- static const char *handled_by_mozilla[] =
- {
- "http",
- "file",
- "toc",
- "man",
- "info",
- "ghelp",
- "gnome-help",
- "https",
- NULL
- };
- gint i;
- gint uri_length;
-
- if (uri == NULL) return FALSE;
-
- uri_length = strlen (uri);
-
- for (i = 0; handled_by_mozilla[i] != NULL; i++)
- {
- const gchar *current = handled_by_mozilla[i];
- gint current_length = strlen (current);
- if ((uri_length >= current_length)
- && (!strncasecmp (uri, current, current_length)))
- return TRUE;
- }
- return FALSE;
-}
-
-
-
-#endif