]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Fix some build warnings under GCC 4.3.0. (#537535).
[evince.git] / shell / ev-window.c
index fe05cec093a29fbe0fc1b669fd90c026a92adc3b..f6a525426730edf3bc855305525d18c2302511a4 100644 (file)
@@ -66,6 +66,7 @@
 #include "ev-history.h"
 #include "ev-image.h"
 #include "ev-message-area.h"
+#include "ev-mount-operation.h"
 
 #include <gtk/gtkprintunixdialog.h>
 
@@ -268,6 +269,8 @@ static void     find_bar_search_changed_cb              (EggFindBar       *find_
                                                         GParamSpec       *param,
                                                         EvWindow         *ev_window);
 static void     ev_window_do_preview_print              (EvWindow         *window);
+static void     ev_window_load_file_remote              (EvWindow         *ev_window,
+                                                        GFile            *source_file);
 
 G_DEFINE_TYPE (EvWindow, ev_window, GTK_TYPE_WINDOW)
 
@@ -1072,8 +1075,6 @@ ev_window_set_icon_from_thumbnail (EvJobThumbnail *job,
 static void
 ev_window_refresh_window_thumbnail (EvWindow *ev_window, int rotation)
 {
-       
-       EvRenderContext *rc;
        gint page_width, page_height;
        gdouble scale;
        EvDocument *document = ev_window->priv->document;
@@ -1089,14 +1090,11 @@ ev_window_refresh_window_thumbnail (EvWindow *ev_window, int rotation)
                                &page_width, &page_height);
        scale = (gdouble)128 / (gdouble)page_width;
        
-       rc = ev_render_context_new (rotation, 0, scale);
-       
-       ev_window->priv->thumbnail_job = ev_job_thumbnail_new (document, rc);
+       ev_window->priv->thumbnail_job = ev_job_thumbnail_new (document, 0, rotation, scale);
        g_signal_connect (ev_window->priv->thumbnail_job, "finished",
                          G_CALLBACK (ev_window_set_icon_from_thumbnail),
                          ev_window);
        ev_job_queue_add_job (EV_JOB (ev_window->priv->thumbnail_job), EV_JOB_PRIORITY_LOW);
-       g_object_unref (rc);
 }
 
 static gboolean
@@ -1426,6 +1424,39 @@ ev_window_close_dialogs (EvWindow *ev_window)
        ev_window->priv->properties = NULL;
 }
 
+static void
+ev_window_load_remote_failed (EvWindow *ev_window,
+                             GError   *error)
+{
+       ev_view_set_loading (EV_VIEW (ev_window->priv->view), FALSE);
+       ev_window->priv->in_reload = FALSE;
+       ev_window_error_message (GTK_WINDOW (ev_window),
+                                _("Unable to open document"),
+                                error);
+       g_free (ev_window->priv->local_uri);
+       ev_window->priv->local_uri = NULL;
+}
+
+static void
+mount_volume_ready_cb (GFile        *source,
+                      GAsyncResult *async_result,
+                      EvWindow     *ev_window)
+{
+       GError *error = NULL;
+
+       g_file_mount_enclosing_volume_finish (source, async_result, &error);
+
+       if (error) {
+               ev_window_load_remote_failed (ev_window, error);
+               g_object_unref (source);
+               g_error_free (error);
+       } else {
+               /* Volume successfully mounted,
+                  try opening the file again */
+               ev_window_load_file_remote (ev_window, source);
+       }
+}
+
 static void
 window_open_file_copy_ready_cb (GFile        *source,
                                GAsyncResult *async_result,
@@ -1443,19 +1474,21 @@ window_open_file_copy_ready_cb (GFile        *source,
 
        if (error->domain == G_IO_ERROR &&
            error->code == G_IO_ERROR_NOT_MOUNTED) {
-               /* TODO: try to mount */
+               GMountOperation *operation;
+
+               operation = ev_mount_operation_new (GTK_WINDOW (ev_window));
+               g_file_mount_enclosing_volume (source,
+                                              G_MOUNT_MOUNT_NONE,
+                                              operation, NULL,
+                                              (GAsyncReadyCallback)mount_volume_ready_cb,
+                                              ev_window);
+               g_object_unref (operation);
+       } else {
+               ev_window_load_remote_failed (ev_window, error);
+               g_object_unref (source);
        }
-
-       ev_view_set_loading (EV_VIEW (ev_window->priv->view), FALSE);
-       ev_window->priv->in_reload = FALSE;
-       ev_window_error_message (GTK_WINDOW (ev_window),
-                                _("Unable to open document"),
-                                error);
-       g_free (ev_window->priv->local_uri);
-       ev_window->priv->local_uri = NULL;
        
        g_error_free (error);
-       g_object_unref (source);
 }
 
 static void
@@ -1908,7 +1941,7 @@ window_save_file_copy_ready_cb (GFile        *src,
                                         _("The file could not be saved as ā€œ%sā€."),
                                         name);
        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                                 error->message);
+                                                 "%s", error->message);
        g_signal_connect (dialog, "response",
                          G_CALLBACK (gtk_widget_destroy),
                          NULL);
@@ -2123,7 +2156,7 @@ ev_window_print_finished (GtkPrintJob *print_job,
                                                 GTK_BUTTONS_OK,
                                                 _("Failed to print document"));
                gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                                         error->message);
+                                                         "%s", error->message);
 
                gtk_dialog_run (GTK_DIALOG (dialog));
                gtk_widget_destroy (dialog);
@@ -2195,7 +2228,7 @@ ev_window_print_send (EvWindow    *window,
                GtkPrintJob *job;
                GError      *error = NULL;
        
-               job = gtk_print_job_new ("evince-print",
+               job = gtk_print_job_new (gtk_window_get_title (GTK_WINDOW (window)),
                                         window->priv->printer,
                                         settings,
                                         window->priv->print_page_setup);
@@ -2210,7 +2243,7 @@ ev_window_print_send (EvWindow    *window,
                                            window, NULL);
                } else {
                        ev_window_clear_print_job (window);
-                       g_warning (error->message);
+                       g_warning ("%s", error->message);
                        g_error_free (error);
                }
        }
@@ -2223,7 +2256,7 @@ ev_window_print_job_cb (EvJobPrint *job,
                        EvWindow   *window)
 {
        if (job->error) {
-               g_warning (job->error->message);
+               g_warning ("%s", job->error->message);
                ev_window_clear_print_job (window);
                return;
        }
@@ -3217,7 +3250,7 @@ ev_window_cmd_help_contents (GtkAction *action, EvWindow *ev_window)
        screen = gtk_widget_get_screen (GTK_WIDGET (ev_window));
        gdk_spawn_command_line_on_screen (screen, command, &error);
        if (error != NULL) {
-               g_warning (error->message);
+               g_warning ("%s", error->message);
                g_error_free (error);
        }
        g_free (command);
@@ -3273,7 +3306,7 @@ ev_window_preview_print_finished (GtkPrintJob *print_job,
                                                 GTK_BUTTONS_OK,
                                                 _("Failed to print document"));
                gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                                         error->message);
+                                                         "%s", error->message);
 
                gtk_dialog_run (GTK_DIALOG (dialog));
                gtk_widget_destroy (dialog);
@@ -3297,7 +3330,7 @@ ev_window_do_preview_print (EvWindow *window)
 
        page_setup = gtk_page_setup_new ();
 
-       job = gtk_print_job_new ("evince-print",
+       job = gtk_print_job_new (gtk_window_get_title (GTK_WINDOW (window)),
                                 priv->printer,
                                 priv->print_settings,
                                 page_setup);
@@ -3317,7 +3350,7 @@ ev_window_do_preview_print (EvWindow *window)
                                    (GtkPrintJobCompleteFunc)ev_window_preview_print_finished,
                                    window, NULL);
        } else {
-               g_warning (error->message);
+               g_warning ("%s", error->message);
                g_error_free (error);
        }
 
@@ -3342,7 +3375,7 @@ ev_window_cmd_preview_print (GtkAction *action, EvWindow *window)
                                                                           &error);
                        
                        if (error) {
-                               g_warning (error->message);
+                               g_warning ("%s", error->message);
                                g_error_free (error);
                                print_settings = NULL;
                        }
@@ -4160,7 +4193,7 @@ static const GtkActionEntry entries[] = {
        { "FileOpen", GTK_STOCK_OPEN, N_("_Open..."), "<control>O",
          N_("Open an existing document"),
          G_CALLBACK (ev_window_cmd_file_open) },
-       { "FileOpenCopy", NULL, N_("Op_en a Copy"), NULL,
+       { "FileOpenCopy", NULL, N_("Op_en a Copy"), "<control>N",
          N_("Open a copy of the current document in a new window"),
          G_CALLBACK (ev_window_cmd_file_open_copy) },
                { "FileSaveAs", GTK_STOCK_SAVE_AS, N_("_Save a Copy..."), "<control>S",
@@ -4285,6 +4318,8 @@ static const GtkActionEntry entries[] = {
           G_CALLBACK (ev_window_cmd_view_zoom_in) },
         { "CtrlKpMinus", GTK_STOCK_ZOOM_OUT, NULL, "<control>KP_Subtract", NULL,
           G_CALLBACK (ev_window_cmd_view_zoom_out) },
+       { "CtrlInsert", GTK_STOCK_COPY, NULL, "<control>Insert", NULL,
+         G_CALLBACK (ev_window_cmd_edit_copy) },
 };
 
 /* Toggle items */
@@ -4762,19 +4797,14 @@ ev_view_popup_cmd_open_link_new_window (GtkAction *action, EvWindow *window)
 static void
 ev_view_popup_cmd_copy_link_address (GtkAction *action, EvWindow *window)
 {
-       GtkClipboard *clipboard;
        EvLinkAction *ev_action;
-       const gchar *uri;
 
        ev_action = ev_link_get_action (window->priv->link);
        if (!ev_action)
                return;
 
-       uri = ev_link_action_get_uri (ev_action);
-
-       clipboard = gtk_widget_get_clipboard (GTK_WIDGET (window),
-                                             GDK_SELECTION_CLIPBOARD);
-       gtk_clipboard_set_text (clipboard, uri, -1);
+       ev_view_copy_link_address (EV_VIEW (window->priv->view),
+                                  ev_action);
 }