#include "ev-history.h"
#include "ev-image.h"
#include "ev-message-area.h"
+#include "ev-mount-operation.h"
#include <gtk/gtkprintunixdialog.h>
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)
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,
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
_("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);
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);
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);
window, NULL);
} else {
ev_window_clear_print_job (window);
- g_warning (error->message);
+ g_warning ("%s", error->message);
g_error_free (error);
}
}
EvWindow *window)
{
if (job->error) {
- g_warning (job->error->message);
+ g_warning ("%s", job->error->message);
ev_window_clear_print_job (window);
return;
}
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);
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);
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);
(GtkPrintJobCompleteFunc)ev_window_preview_print_finished,
window, NULL);
} else {
- g_warning (error->message);
+ g_warning ("%s", error->message);
g_error_free (error);
}
&error);
if (error) {
- g_warning (error->message);
+ g_warning ("%s", error->message);
g_error_free (error);
print_settings = NULL;
}
{ "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",
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);
}