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.c636
1 files changed, 0 insertions, 636 deletions
diff --git a/src/ephy-nautilus-view.c b/src/ephy-nautilus-view.c
deleted file mode 100644
index db379cd6d..000000000
--- a/src/ephy-nautilus-view.c
+++ /dev/null
@@ -1,636 +0,0 @@
-/*
- * Copyright (C) 2001, 2002 Ricardo Fernández Pascual
- * Copyright (C) 2003 Marco Pesenti Gritti
- * Copyright (C) 2003 Christian Persch
- *
- * 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$
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <libgnome/gnome-macros.h>
-#include <bonobo/bonobo-zoomable.h>
-#include <bonobo/bonobo-ui-util.h>
-#include <string.h>
-
-#include "ephy-embed-factory.h"
-#include "ephy-embed-popup-control.h"
-#include "ephy-nautilus-view.h"
-#include "ephy-embed.h"
-#include "find-dialog.h"
-#include "print-dialog.h"
-#include "ephy-encoding-dialog.h"
-#include "ephy-zoom.h"
-#include "ephy-debug.h"
-
-static void gnv_embed_location_cb (EphyEmbed *embed,
- const char *new_uri,
- EphyNautilusView *view);
-static void gnv_embed_title_cb (EphyEmbed *embed,
- EphyNautilusView *view);
-static void gnv_embed_new_window_cb (EphyEmbed *embed,
- EphyEmbed **new_embed,
- EphyEmbedChrome chromemask,
- EphyNautilusView *view);
-static void gnv_embed_link_message_cb (EphyEmbed *embed,
- EphyNautilusView *view);
-static gint gnv_embed_dom_mouse_click_cb (EphyEmbed *embed,
- EphyEmbedEvent *event,
- EphyNautilusView *view);
-static void gnv_embed_context_menu_cb (EphyEmbed *embed,
- EphyEmbedEvent *event,
- EphyNautilusView *view);
-static void gnv_embed_zoom_change_cb (EphyNautilusView *embed,
- float new_zoom,
- EphyNautilusView *view);
-
-
-static void gnv_load_location_cb (EphyNautilusView *view,
- const char *location,
- gpointer user_data);
-static void gnv_stop_loading_cb (EphyNautilusView *view,
- gpointer user_data);
-static void gnv_bonobo_control_activate_cb (BonoboControl *control,
- gboolean state,
- EphyNautilusView *view);
-
-/* zoomable */
-static void gnv_zoomable_set_zoom_level_cb (BonoboZoomable *zoomable,
- float level,
- EphyNautilusView *view);
-static void gnv_zoomable_zoom_in_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view);
-static void gnv_zoomable_zoom_out_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view);
-static void gnv_zoomable_zoom_to_fit_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view);
-static void gnv_zoomable_zoom_to_default_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view);
-/* commands */
-static void gnv_cmd_file_print (BonoboUIComponent *uic,
- EphyNautilusView *view,
- const char* verbname);
-static void gnv_cmd_edit_find (BonoboUIComponent *uic,
- EphyNautilusView *view,
- const char* verbname);
-static void gnv_cmd_select_encoding (BonoboUIComponent *uic,
- EphyNautilusView *view,
- const char* verbname);
-
-/* popups */
-static EphyNautilusView *gnv_view_from_popup (EphyEmbedPopupControl*popup);
-
-static void gnv_popup_cmd_new_window (BonoboUIComponent *uic,
- EphyEmbedPopupControl*popup,
- const char* verbname);
-static void gnv_popup_cmd_image_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopupControl*popup,
- const char* verbname);
-static void gnv_popup_cmd_frame_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopupControl*popup,
- const char* verbname);
-
-#define EPHY_NAUTILUS_VIEW_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_NAUTILUS_VIEW, EphyNautilusViewPrivate))
-
-struct EphyNautilusViewPrivate {
- EphyEmbed *embed;
- char *title;
- char *location;
- int load_percent;
-
- EphyEmbedPopupControl *popup;
- BonoboUIComponent *popup_ui;
- BonoboControl *control;
- BonoboUIComponent *ui;
- BonoboZoomable *zoomable;
-
- EphyDialog *find_dialog;
-};
-
-static BonoboUIVerb ephy_popup_verbs [] = {
- BONOBO_UI_VERB ("EPOpenInNewWindow", (BonoboUIVerbFn) gnv_popup_cmd_new_window),
- BONOBO_UI_VERB ("EPOpenImageInNewWindow", (BonoboUIVerbFn) gnv_popup_cmd_image_in_new_window),
- BONOBO_UI_VERB ("DPOpenFrameInNewWindow", (BonoboUIVerbFn) gnv_popup_cmd_frame_in_new_window),
-
- BONOBO_UI_VERB_END
-};
-
-BonoboUIVerb ephy_verbs [] = {
- BONOBO_UI_VERB ("FilePrint", (BonoboUIVerbFn) gnv_cmd_file_print),
- BONOBO_UI_VERB ("EditFind", (BonoboUIVerbFn) gnv_cmd_edit_find),
- BONOBO_UI_VERB ("ViewEncoding", (BonoboUIVerbFn) gnv_cmd_select_encoding),
- BONOBO_UI_VERB_END
-};
-
-BONOBO_CLASS_BOILERPLATE (EphyNautilusView, ephy_nautilus_view,
- NautilusView, NAUTILUS_TYPE_VIEW)
-
-static gboolean
-disconnected_idle (EphyShell *shell)
-{
- g_object_unref (shell);
-
- return FALSE;
-}
-
-static void
-control_disconnected_cb (BonoboControl *control)
-{
- g_idle_add ((GSourceFunc)disconnected_idle, ephy_shell);
-}
-
-static void
-ephy_nautilus_view_instance_init (EphyNautilusView *view)
-{
- GtkWidget *w;
- EphyNautilusViewPrivate *p = EPHY_NAUTILUS_VIEW_GET_PRIVATE (view);
- float *levels;
- gchar **names;
- guint i;
- BonoboControl *control;
-
- view->priv = p;
-
- view->priv->embed = EPHY_EMBED
- (ephy_embed_factory_new_object ("EphyEmbed"));
-
- g_signal_connect (view->priv->embed, "link_message",
- G_CALLBACK (gnv_embed_link_message_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_location",
- G_CALLBACK (gnv_embed_location_cb),
- view);
- g_signal_connect (view->priv->embed, "title",
- G_CALLBACK (gnv_embed_title_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_new_window",
- G_CALLBACK (gnv_embed_new_window_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_dom_mouse_click",
- G_CALLBACK (gnv_embed_dom_mouse_click_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_context_menu",
- G_CALLBACK (gnv_embed_context_menu_cb),
- view);
- g_signal_connect (view->priv->embed, "ge_zoom_change",
- G_CALLBACK (gnv_embed_zoom_change_cb),
- view);
-
- w = GTK_WIDGET (view->priv->embed);
- gtk_widget_show (w);
-
- nautilus_view_construct (NAUTILUS_VIEW (view), w);
-
- g_signal_connect (G_OBJECT (view), "load_location",
- G_CALLBACK (gnv_load_location_cb), NULL);
-
- g_signal_connect (G_OBJECT (view), "stop_loading",
- G_CALLBACK (gnv_stop_loading_cb), NULL);
-
- control = nautilus_view_get_bonobo_control (NAUTILUS_VIEW (view));
- g_object_ref (ephy_shell);
-
- g_signal_connect (control, "disconnected",
- G_CALLBACK (control_disconnected_cb), NULL);
- g_signal_connect (control,
- "activate",
- G_CALLBACK (gnv_bonobo_control_activate_cb), view);
-
- view->priv->zoomable = bonobo_zoomable_new ();
- bonobo_object_add_interface (BONOBO_OBJECT (view),
- BONOBO_OBJECT (view->priv->zoomable));
-
- /* get zoom levels */
- levels = g_new0 (float, n_zoom_levels);
- names = g_new0 (gchar *, n_zoom_levels);
- for (i = 0; i < n_zoom_levels; i++)
- {
- levels[i] = zoom_levels[i].level;
- names[i] = zoom_levels[i].name;
- }
-
- bonobo_zoomable_set_parameters_full (view->priv->zoomable,
- 1.0,
- levels [0],
- levels [n_zoom_levels-1],
- FALSE, FALSE, TRUE,
- levels,
- (const gchar **) names,
- n_zoom_levels);
-
- g_free (levels);
- g_free (names);
-
- bonobo_object_add_interface (BONOBO_OBJECT (view),
- BONOBO_OBJECT (view->priv->zoomable));
-
- g_signal_connect (view->priv->zoomable, "set_zoom_level",
- G_CALLBACK (gnv_zoomable_set_zoom_level_cb), view);
- g_signal_connect (view->priv->zoomable, "zoom_in",
- G_CALLBACK (gnv_zoomable_zoom_in_cb), view);
- g_signal_connect (view->priv->zoomable, "zoom_out",
- G_CALLBACK (gnv_zoomable_zoom_out_cb), view);
- g_signal_connect (view->priv->zoomable, "zoom_to_fit",
- G_CALLBACK (gnv_zoomable_zoom_to_fit_cb), view);
- g_signal_connect (view->priv->zoomable, "zoom_to_default",
- G_CALLBACK (gnv_zoomable_zoom_to_default_cb), view);
-
- p->control = nautilus_view_get_bonobo_control (NAUTILUS_VIEW (view));
-
- p->popup_ui = bonobo_control_get_popup_ui_component (p->control);
- g_assert (BONOBO_IS_UI_COMPONENT (p->popup_ui));
- bonobo_ui_util_set_ui (p->popup_ui, SHARE_DIR,
- "nautilus-epiphany-view.xml",
- "EphyNautilusView", NULL);
- p->popup = ephy_embed_popup_control_new (p->control);
- 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);
-}
-
-BonoboObject *
-ephy_nautilus_view_new_component (EphyShell *shell)
-{
- return BONOBO_OBJECT (g_object_new (EPHY_TYPE_NAUTILUS_VIEW, NULL));
-}
-
-static void
-ephy_nautilus_view_finalize (GObject *object)
-{
- EphyNautilusView *view = EPHY_NAUTILUS_VIEW (object);
- EphyNautilusViewPrivate *p = view->priv;
-
- if (p->find_dialog)
- {
- g_object_remove_weak_pointer (G_OBJECT (p->find_dialog),
- (gpointer *) &p->find_dialog);
- g_object_unref (p->find_dialog);
- }
-
- g_object_unref (p->popup);
-
- g_free (p->title);
- g_free (p->location);
-
- GNOME_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
-}
-
-static void
-ephy_nautilus_view_class_init (EphyNautilusViewClass *class)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (class);
-
- object_class->finalize = ephy_nautilus_view_finalize;
-
- g_type_class_add_private (object_class, sizeof(EphyNautilusViewPrivate));
-}
-
-static gint
-gnv_embed_dom_mouse_click_cb (EphyEmbed *embed,
- EphyEmbedEvent *event,
- EphyNautilusView *view)
-{
- EphyEmbedEventType type;
- EmbedEventContext context;
-
- type = ephy_embed_event_get_event_type (event);
- context = ephy_embed_event_get_context (event);
-
- if (type == EPHY_EMBED_EVENT_MOUSE_BUTTON2
- && (context & EMBED_CONTEXT_LINK))
- {
- const GValue *value;
- const gchar *url;
- ephy_embed_event_get_property (event, "link", &value);
- url = g_value_get_string (value);
-
- g_return_val_if_fail (url, FALSE);
-
- nautilus_view_open_location (NAUTILUS_VIEW (view), url,
- Nautilus_ViewFrame_OPEN_IN_NAVIGATION,
- 0, NULL);
- }
-
- return FALSE;
-}
-
-static void
-gnv_embed_context_menu_cb (EphyEmbed *embed,
- EphyEmbedEvent *event,
- EphyNautilusView *view)
-{
- EphyNautilusViewPrivate *p = view->priv;
-
- ephy_embed_popup_control_set_event (p->popup, event);
- ephy_embed_popup_control_show (p->popup, embed);
-}
-
-static void
-gnv_embed_link_message_cb (EphyEmbed *embed, EphyNautilusView *view)
-{
- char *message;
-
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
-
- message = ephy_embed_get_link_message (embed);
-
- nautilus_view_report_status (NAUTILUS_VIEW (view), message);
-
- g_free (message);
-}
-
-static void
-gnv_embed_location_cb (EphyEmbed *embed, const char *new_uri, EphyNautilusView *view)
-{
- const char *prefixes_to_ignore[] =
- {
- "about:",
- "javascript:",
- NULL
- };
- int i = 0;
-
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
- g_return_if_fail (view->priv->embed == embed);
- g_return_if_fail (new_uri != NULL);
-
- /* don't inform nautilus about uris that it can't understand */
- while (prefixes_to_ignore[i] != NULL)
- {
- if (strncmp (prefixes_to_ignore[i], new_uri, strlen (prefixes_to_ignore[i])) == 0)
- {
- return;
- }
- ++i;
- }
-
- nautilus_view_report_location_change (NAUTILUS_VIEW (view), new_uri, NULL, new_uri);
-
- g_free (view->priv->location);
- view->priv->location = g_strdup (new_uri);
-}
-
-static void
-gnv_embed_title_cb (EphyEmbed *embed, EphyNautilusView *view)
-{
- EphyNautilusViewPrivate *p;
-
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
- p = view->priv;
- g_return_if_fail (view->priv->embed == embed);
-
- g_free (p->title);
- p->title = ephy_embed_get_title (embed);
-
- nautilus_view_set_title (NAUTILUS_VIEW (view), p->title);
-}
-
-static void
-gnv_load_location_cb (EphyNautilusView *view, const char *location, gpointer user_data)
-{
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
- g_return_if_fail (location != NULL);
-
- nautilus_view_report_load_underway (NAUTILUS_VIEW (view));
- ephy_embed_load_url (view->priv->embed, location);
-
-}
-
-static void
-gnv_stop_loading_cb (EphyNautilusView *view, gpointer user_data)
-{
-}
-
-static void
-gnv_embed_new_window_cb (EphyEmbed *embed, EphyEmbed **new_embed,
- EphyEmbedChrome chromemask, EphyNautilusView *view)
-{
- EphyTab *new_tab;
- EphyWindow *window;
-
- window = ephy_window_new ();
- new_tab = ephy_tab_new ();
- gtk_widget_show (GTK_WIDGET (new_tab));
-
- ephy_window_add_tab (window, new_tab, EPHY_NOTEBOOK_INSERT_LAST, FALSE);
-
- *new_embed = ephy_tab_get_embed (new_tab);
-}
-
-static void
-gnv_bonobo_control_activate_cb (BonoboControl *control, gboolean state, EphyNautilusView *view)
-{
- if (state)
- {
- EphyNautilusViewPrivate *p = view->priv;
-
- p->ui = nautilus_view_set_up_ui (NAUTILUS_VIEW (view), SHARE_DIR,
- "nautilus-epiphany-view.xml", "EphyNautilusView");
- g_return_if_fail (BONOBO_IS_UI_COMPONENT (p->ui));
-
- bonobo_ui_component_add_verb_list_with_data (p->ui, ephy_verbs, view);
- }
-}
-
-static EphyNautilusView *
-gnv_view_from_popup (EphyEmbedPopupControl*popup)
-{
- return g_object_get_data (G_OBJECT (popup), "NautilisView");
-}
-
-
-static void
-gnv_popup_cmd_new_window (BonoboUIComponent *uic,
- EphyEmbedPopupControl*popup,
- const char* verbname)
-{
- EphyEmbedEvent *info;
- EphyNautilusView *view;
- const GValue *value;
-
- view = gnv_view_from_popup (popup);
-
- info = ephy_embed_popup_control_get_event (popup);
-
- ephy_embed_event_get_property (info, "link", &value);
-
- nautilus_view_open_location (NAUTILUS_VIEW (view),
- g_value_get_string (value),
- Nautilus_ViewFrame_OPEN_IN_NAVIGATION,
- 0, NULL);
-}
-
-static void
-gnv_popup_cmd_image_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopupControl*popup,
- const char* verbname)
-{
- EphyEmbedEvent *info;
- EphyNautilusView *view;
- const GValue *value;
-
- view = gnv_view_from_popup (popup);
-
- info = ephy_embed_popup_control_get_event (popup);
-
- ephy_embed_event_get_property (info, "image", &value);
-
- nautilus_view_open_location (NAUTILUS_VIEW (view),
- g_value_get_string (value),
- Nautilus_ViewFrame_OPEN_IN_NAVIGATION,
- 0, NULL);
-}
-
-static void
-gnv_popup_cmd_frame_in_new_window (BonoboUIComponent *uic,
- EphyEmbedPopupControl*popup,
- const char* verbname)
-{
- EphyEmbedEvent *info;
- EphyNautilusView *view;
- gchar *location;
-
- view = gnv_view_from_popup (popup);
-
- info = ephy_embed_popup_control_get_event (popup);
-
- location = ephy_embed_get_location (view->priv->embed, FALSE);
-
- nautilus_view_open_location (NAUTILUS_VIEW (view),
- location,
- Nautilus_ViewFrame_OPEN_IN_NAVIGATION,
- 0, NULL);
-
- g_free (location);
-}
-
-static void
-gnv_cmd_select_encoding (BonoboUIComponent *uic,
- EphyNautilusView *view,
- const char* verbname)
-{
- EphyDialog *dialog;
-
- dialog = EPHY_DIALOG (g_object_new (EPHY_TYPE_ENCODING_DIALOG,
- "embed", view->priv->embed,
- NULL));
-
- ephy_dialog_set_modal (dialog, TRUE);
- ephy_dialog_run (dialog);
- g_object_unref (dialog);
-}
-
-static void
-gnv_cmd_file_print (BonoboUIComponent *uic,
- EphyNautilusView *view,
- const char* verbname)
-{
- EphyDialog *dialog;
- EphyNautilusViewPrivate *p = view->priv;
-
- dialog = ephy_print_dialog_new (NULL, p->embed, FALSE);
-
- ephy_dialog_set_modal (dialog, TRUE);
- ephy_dialog_run (dialog);
- g_object_unref (dialog);
-}
-
-static void
-gnv_cmd_edit_find (BonoboUIComponent *uic,
- EphyNautilusView *view,
- const char* verbname)
-{
- EphyNautilusViewPrivate *p = view->priv;
-
- if (p->find_dialog == NULL)
- {
- p->find_dialog = find_dialog_new (p->embed);
- g_object_add_weak_pointer (G_OBJECT (p->find_dialog),
- (gpointer *) &p->find_dialog);
- }
-
- ephy_dialog_show (p->find_dialog);
-}
-
-/* zoomable */
-static void
-gnv_zoomable_set_zoom_level_cb (BonoboZoomable *zoomable,
- float level,
- EphyNautilusView *view)
-{
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
- ephy_embed_set_zoom (view->priv->embed,
- ephy_zoom_get_nearest_zoom_level (level), TRUE);
-}
-
-static void
-gnv_zoomable_zoom_in_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view)
-{
- float zoom, new_zoom;
-
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
-
- zoom = ephy_embed_get_zoom (view->priv->embed);
-
- new_zoom = ephy_zoom_get_changed_zoom_level (zoom, 1);
- ephy_embed_set_zoom (view->priv->embed, new_zoom, TRUE);
-}
-
-static void
-gnv_zoomable_zoom_out_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view)
-{
- float zoom, new_zoom;
-
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
-
- zoom = ephy_embed_get_zoom (view->priv->embed);
-
- new_zoom = ephy_zoom_get_changed_zoom_level (zoom, -1);
- ephy_embed_set_zoom (view->priv->embed, new_zoom, TRUE);
-}
-
-static void
-gnv_zoomable_zoom_to_fit_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view)
-{
- gnv_zoomable_zoom_to_default_cb (zoomable, view);
-}
-
-static void
-gnv_zoomable_zoom_to_default_cb (BonoboZoomable *zoomable,
- EphyNautilusView *view)
-{
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
- ephy_embed_set_zoom (view->priv->embed, 1.0, TRUE);
-}
-
-static void
-gnv_embed_zoom_change_cb (EphyNautilusView *embed,
- float new_zoom,
- EphyNautilusView *view)
-{
- g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view));
-
- bonobo_zoomable_report_zoom_level_changed (view->priv->zoomable,
- new_zoom, NULL);
-}