From e912e532fd67211aa87ac79414efb30f30a00fab Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Fri, 25 Jan 2008 12:30:28 +0000 Subject: [PATCH] Port to gio and drop gnome-vfs dependency. Fixes bug #510401. Based on 2008-01-25 Carlos Garcia Campos * configure.ac: * backend/comics/comics-document.c: (comics_document_load): * libdocument/ev-attachment.[ch]: (ev_attachment_finalize), (ev_attachment_set_property), (ev_attachment_init), (ev_attachment_save), (ev_attachment_launch_app), (ev_attachment_open): * libdocument/ev-document-factory.c: (get_document_from_uri): * libdocument/ev-file-helpers.[ch]: (ev_tmp_file_get), (ev_tmp_file_unlink), (ev_tmp_uri_unlink), (ev_xfer_uri_simple),: * shell/ev-jobs.c: * shell/ev-password.c: (ev_password_dialog_set_property), (ev_password_dialog_save_password): * shell/ev-sidebar-attachments.c: (ev_sidebar_attachments_drag_data_get): * shell/ev-window-title.c: (get_filename_from_uri): * shell/ev-window.c: (ev_window_clear_temp_file), (ev_window_load_job_cb), (window_open_file_copy_ready_cb), (ev_window_open_uri), (window_save_file_copy_ready_cb), (ev_window_save_remote), (ev_window_cmd_save_as), (launch_action), (launch_external_uri), (image_save_dialog_response_cb), (attachment_save_dialog_response_cb): * shell/main.c: (load_files), (load_files_remote), (main): * thumbnailer/evince-thumbnailer.c: (main): Port to gio and drop gnome-vfs dependency. Fixes bug #510401. Based on patch by Cosimo Cecchi. svn path=/trunk/; revision=2858 --- ChangeLog | 29 ++ backend/comics/comics-document.c | 20 +- configure.ac | 7 +- libdocument/ev-attachment.c | 135 +++++----- libdocument/ev-attachment.h | 3 +- libdocument/ev-document-factory.c | 50 ++-- libdocument/ev-file-helpers.c | 92 ++++--- libdocument/ev-file-helpers.h | 9 +- shell/ev-jobs.c | 3 - shell/ev-password.c | 16 +- shell/ev-sidebar-attachments.c | 13 +- shell/ev-window-title.c | 12 +- shell/ev-window.c | 422 +++++++++++++----------------- shell/main.c | 18 +- thumbnailer/evince-thumbnailer.c | 15 +- 15 files changed, 439 insertions(+), 405 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4137ab88..253457e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,32 @@ +2008-01-25 Carlos Garcia Campos + + * configure.ac: + * backend/comics/comics-document.c: (comics_document_load): + * libdocument/ev-attachment.[ch]: (ev_attachment_finalize), + (ev_attachment_set_property), (ev_attachment_init), + (ev_attachment_save), (ev_attachment_launch_app), + (ev_attachment_open): + * libdocument/ev-document-factory.c: (get_document_from_uri): + * libdocument/ev-file-helpers.[ch]: (ev_tmp_file_get), + (ev_tmp_file_unlink), (ev_tmp_uri_unlink), (ev_xfer_uri_simple),: + * shell/ev-jobs.c: + * shell/ev-password.c: (ev_password_dialog_set_property), + (ev_password_dialog_save_password): + * shell/ev-sidebar-attachments.c: + (ev_sidebar_attachments_drag_data_get): + * shell/ev-window-title.c: (get_filename_from_uri): + * shell/ev-window.c: (ev_window_clear_temp_file), + (ev_window_load_job_cb), (window_open_file_copy_ready_cb), + (ev_window_open_uri), (window_save_file_copy_ready_cb), + (ev_window_save_remote), (ev_window_cmd_save_as), (launch_action), + (launch_external_uri), (image_save_dialog_response_cb), + (attachment_save_dialog_response_cb): + * shell/main.c: (load_files), (load_files_remote), (main): + * thumbnailer/evince-thumbnailer.c: (main): + + Port to gio and drop gnome-vfs dependency. Fixes bug + #510401. Based on patch by Cosimo Cecchi. + 2008-01-24 Wouter Bolsterlee * NEWS: diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c index 004cb8e3..b0d99ca6 100644 --- a/backend/comics/comics-document.c +++ b/backend/comics/comics-document.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include "comics-document.h" #include "ev-document-misc.h" @@ -109,7 +109,10 @@ comics_document_load (EvDocument *document, { ComicsDocument *comics_document = COMICS_DOCUMENT (document); GSList *supported_extensions; - gchar *list_files_command = NULL, *std_out, *quoted_file, *mime_type; + GFile *file; + GFileInfo *file_info; + gchar *list_files_command = NULL, *std_out, *quoted_file; + const gchar *mime_type = NULL; gchar **cbr_files; gboolean success; int i, retval; @@ -118,7 +121,14 @@ comics_document_load (EvDocument *document, g_return_val_if_fail (comics_document->archive != NULL, FALSE); quoted_file = g_shell_quote (comics_document->archive); - mime_type = gnome_vfs_get_mime_type (uri); + file = g_file_new_for_uri (uri); + file_info = g_file_query_info (file, + G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, + 0, NULL, NULL); + if (file_info != NULL) { + mime_type = g_file_info_get_content_type (file_info); + } + g_object_unref (file); /* FIXME, use proper cbr/cbz mime types once they're * included in shared-mime-info */ @@ -136,6 +146,7 @@ comics_document_load (EvDocument *document, comics_document->regex_arg = TRUE; } + g_object_unref (file_info); g_free (quoted_file); /* Get list of files in archive */ @@ -144,14 +155,12 @@ comics_document_load (EvDocument *document, g_free (list_files_command); if (!success) { - g_free (mime_type); return FALSE; } else if (retval != 0) { g_set_error (error, EV_DOCUMENT_ERROR, EV_DOCUMENT_ERROR_INVALID, _("File corrupted.")); - g_free (mime_type); return FALSE; } @@ -177,7 +186,6 @@ comics_document_load (EvDocument *document, } g_free (std_out); - g_free (mime_type); g_strfreev (cbr_files); g_slist_foreach (supported_extensions, (GFunc) g_free, NULL); g_slist_free (supported_extensions); diff --git a/configure.ac b/configure.ac index cffed876..f0d9b608 100644 --- a/configure.ac +++ b/configure.ac @@ -47,6 +47,7 @@ dnl Check dependencies DBUS_GLIB_REQUIRED=0.70 GTK_REQUIRED=2.10.0 +GLIB_REQUIRED=2.15.4 KEYRING_REQUIRED=0.4.0 LIBGNOMEUI_REQUIRED=2.14.0 @@ -57,10 +58,10 @@ LIBXML_REQUIRED=2.5.0 GTK_PRINT_REQUIRED=2.10.0 -PKG_CHECK_MODULES(LIB, gtk+-2.0 >= $GTK_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED gnome-vfs-2.0) +PKG_CHECK_MODULES(LIB, gtk+-2.0 >= $GTK_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED gio-2.0 >= $GLIB_REQUIRED) PKG_CHECK_MODULES(BACKEND, gtk+-2.0 >= $GTK_REQUIRED) -PKG_CHECK_MODULES(FRONTEND_CORE, gtk+-2.0 >= $GTK_REQUIRED libglade-2.0 gnome-vfs-2.0) -PKG_CHECK_MODULES(SHELL_CORE, libxml-2.0 >= $LIBXML_REQUIRED gtk+-2.0 >= $GTK_REQUIRED gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED gnome-vfs-2.0 libglade-2.0 gconf-2.0) +PKG_CHECK_MODULES(FRONTEND_CORE, gtk+-2.0 >= $GTK_REQUIRED libglade-2.0 gio-2.0 >= $GLIB_REQUIRED) +PKG_CHECK_MODULES(SHELL_CORE, libxml-2.0 >= $LIBXML_REQUIRED gtk+-2.0 >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED libglade-2.0 gconf-2.0) BACKEND_LIBTOOL_FLAGS="-module -avoid-version" AC_SUBST(BACKEND_LIBTOOL_FLAGS) diff --git a/libdocument/ev-attachment.c b/libdocument/ev-attachment.c index 7592c4fe..02d5f3d2 100644 --- a/libdocument/ev-attachment.c +++ b/libdocument/ev-attachment.c @@ -20,9 +20,6 @@ #include #include #include -#include -#include -#include #include "ev-file-helpers.h" #include "ev-attachment.h" @@ -46,8 +43,8 @@ struct _EvAttachmentPrivate { gchar *data; gchar *mime_type; - GnomeVFSMimeApplication *app; - gchar *tmp_uri; + GAppInfo *app; + GFile *tmp_file; }; #define EV_ATTACHMENT_GET_PRIVATE(object) \ @@ -93,14 +90,14 @@ ev_attachment_finalize (GObject *object) } if (attachment->priv->app) { - gnome_vfs_mime_application_free (attachment->priv->app); + g_object_unref (attachment->priv->app); attachment->priv->app = NULL; } - if (attachment->priv->tmp_uri) { - ev_tmp_filename_unlink (attachment->priv->tmp_uri); - g_free (attachment->priv->tmp_uri); - attachment->priv->tmp_uri = NULL; + if (attachment->priv->tmp_file) { + ev_tmp_file_unlink (attachment->priv->tmp_file); + g_object_unref (attachment->priv->tmp_file); + attachment->priv->tmp_file = NULL; } (* G_OBJECT_CLASS (ev_attachment_parent_class)->finalize) (object); @@ -132,9 +129,10 @@ ev_attachment_set_property (GObject *object, break; case PROP_DATA: attachment->priv->data = g_value_get_pointer (value); - attachment->priv->mime_type = - g_strdup (gnome_vfs_get_mime_type_for_data (attachment->priv->data, - attachment->priv->size)); + attachment->priv->mime_type = g_content_type_guess (attachment->priv->name, + (guchar *) attachment->priv->data, + attachment->priv->size, + NULL); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, @@ -217,7 +215,7 @@ ev_attachment_init (EvAttachment *attachment) attachment->priv->data = NULL; attachment->priv->mime_type = NULL; - attachment->priv->tmp_uri = NULL; + attachment->priv->tmp_file = NULL; } EvAttachment * @@ -284,78 +282,92 @@ ev_attachment_get_mime_type (EvAttachment *attachment) gboolean ev_attachment_save (EvAttachment *attachment, - const gchar *uri, + GFile *file, GError **error) { - GnomeVFSHandle *handle = NULL; - GnomeVFSFileSize written; - GnomeVFSResult result; - + GFileOutputStream *output_stream; + GError *ioerror = NULL; + gssize written_bytes; + g_return_val_if_fail (EV_IS_ATTACHMENT (attachment), FALSE); - g_return_val_if_fail (uri != NULL, FALSE); + g_return_val_if_fail (G_IS_FILE (file), FALSE); - result = gnome_vfs_create (&handle, uri, - GNOME_VFS_OPEN_WRITE, - FALSE, 0644); - if (result != GNOME_VFS_OK) { + output_stream = g_file_create (file, 0, NULL, &ioerror); + if (output_stream == NULL) { + char *uri; + + uri = g_file_get_uri (file); g_set_error (error, EV_ATTACHMENT_ERROR, - (gint) result, + ioerror->code, _("Couldn't save attachment “%s”: %s"), uri, - gnome_vfs_result_to_string (result)); + ioerror->message); + + g_error_free (ioerror); + g_free (uri); return FALSE; } - - result = gnome_vfs_write (handle, attachment->priv->data, - attachment->priv->size, &written); - if (result != GNOME_VFS_OK || written < attachment->priv->size){ + + written_bytes = g_output_stream_write (G_OUTPUT_STREAM (output_stream), + attachment->priv->data, + attachment->priv->size, + NULL, &ioerror); + if (written_bytes == -1) { + char *uri; + + uri = g_file_get_uri (file); g_set_error (error, EV_ATTACHMENT_ERROR, - (gint) result, + ioerror->code, _("Couldn't save attachment “%s”: %s"), uri, - gnome_vfs_result_to_string (result)); + ioerror->message); - gnome_vfs_close (handle); + g_output_stream_close (G_OUTPUT_STREAM (output_stream), NULL, NULL); + g_error_free (ioerror); + g_free (uri); return FALSE; } - gnome_vfs_close (handle); + g_output_stream_close (G_OUTPUT_STREAM (output_stream), NULL, NULL); return TRUE; + } static gboolean ev_attachment_launch_app (EvAttachment *attachment, GError **error) { - GnomeVFSResult result; - GList *uris = NULL; + gboolean result; + GList *files = NULL; + GError *ioerror = NULL; - g_assert (attachment->priv->tmp_uri != NULL); - g_assert (attachment->priv->app != NULL); + g_assert (G_IS_FILE (attachment->priv->tmp_file)); + g_assert (G_IS_APP_INFO (attachment->priv->app)); - uris = g_list_prepend (uris, attachment->priv->tmp_uri); - result = gnome_vfs_mime_application_launch (attachment->priv->app, - uris); + files = g_list_prepend (files, attachment->priv->tmp_file); + result = g_app_info_launch (attachment->priv->app, files, + NULL, &ioerror); - if (result != GNOME_VFS_OK) { + if (!result) { g_set_error (error, EV_ATTACHMENT_ERROR, (gint) result, _("Couldn't open attachment “%s”: %s"), attachment->priv->name, - gnome_vfs_result_to_string (result)); + ioerror->message); - g_list_free (uris); + g_list_free (files); + g_error_free (ioerror); return FALSE; } - g_list_free (uris); + g_list_free (files); return TRUE; } @@ -364,15 +376,14 @@ gboolean ev_attachment_open (EvAttachment *attachment, GError **error) { - - gboolean retval = FALSE; - GnomeVFSMimeApplication *default_app = NULL; + GAppInfo *app_info; + gboolean retval = FALSE; g_return_val_if_fail (EV_IS_ATTACHMENT (attachment), FALSE); if (!attachment->priv->app) { - default_app = gnome_vfs_mime_get_default_application (attachment->priv->mime_type); - attachment->priv->app = default_app; + app_info = g_app_info_get_default_for_type (attachment->priv->mime_type, TRUE); + attachment->priv->app = app_info; } if (!attachment->priv->app) { @@ -385,26 +396,28 @@ ev_attachment_open (EvAttachment *attachment, return FALSE; } - if (attachment->priv->tmp_uri && - g_file_test (attachment->priv->tmp_uri, G_FILE_TEST_EXISTS)) { + if (attachment->priv->tmp_file && + g_file_query_exists (attachment->priv->tmp_file, NULL)) { retval = ev_attachment_launch_app (attachment, error); } else { - gchar *uri, *filename; + GFile *tmpdir; + GFile *file; - filename = g_build_filename (ev_tmp_dir (), attachment->priv->name, NULL); - uri = g_filename_to_uri (filename, NULL, NULL); + tmpdir = g_file_new_for_path (ev_tmp_dir ()); + file = g_file_get_child (tmpdir, attachment->priv->name); - if (ev_attachment_save (attachment, uri, error)) { - if (attachment->priv->tmp_uri) - g_free (attachment->priv->tmp_uri); - attachment->priv->tmp_uri = g_strdup (filename); + if (ev_attachment_save (attachment, file, error)) { + if (attachment->priv->tmp_file) + g_object_unref (attachment->priv->tmp_file); + attachment->priv->tmp_file = g_object_ref (file); retval = ev_attachment_launch_app (attachment, error); } - g_free (filename); - g_free (uri); + g_object_unref (file); + g_object_unref (tmpdir); } return retval; } + diff --git a/libdocument/ev-attachment.h b/libdocument/ev-attachment.h index 994b6549..8403bee8 100644 --- a/libdocument/ev-attachment.h +++ b/libdocument/ev-attachment.h @@ -21,6 +21,7 @@ #define __EV_ATTACHMENT_H__ #include +#include G_BEGIN_DECLS @@ -62,7 +63,7 @@ GTime ev_attachment_get_modification_date (EvAttachment *attachment); GTime ev_attachment_get_creation_date (EvAttachment *attachment); const gchar *ev_attachment_get_mime_type (EvAttachment *attachment); gboolean ev_attachment_save (EvAttachment *attachment, - const gchar *uri, + GFile *file, GError **error); gboolean ev_attachment_open (EvAttachment *attachment, GError **error); diff --git a/libdocument/ev-document-factory.c b/libdocument/ev-document-factory.c index 21e0b4a9..1bc67ef6 100644 --- a/libdocument/ev-document-factory.c +++ b/libdocument/ev-document-factory.c @@ -23,11 +23,9 @@ #endif #include +#include #include #include -#include -#include -#include #include #include "ev-backends-manager.h" @@ -112,55 +110,57 @@ get_document_from_uri (const char *uri, GError **error) { EvDocument *document = NULL; - GnomeVFSFileInfo *info; - GnomeVFSResult result; + GFile *file; + GFileInfo *file_info; + const gchar *mime_type; *compression = EV_COMPRESSION_NONE; - info = gnome_vfs_file_info_new (); - result = gnome_vfs_get_file_info (uri, info, - GNOME_VFS_FILE_INFO_GET_MIME_TYPE | - GNOME_VFS_FILE_INFO_FOLLOW_LINKS | - (slow ? GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE : 0)); - if (result != GNOME_VFS_OK) { + file = g_file_new_for_uri (uri); + file_info = g_file_query_info (file, + G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, + 0, NULL, NULL); + g_object_unref (file); + + if (file_info == NULL) { g_set_error (error, EV_DOCUMENT_ERROR, 0, - gnome_vfs_result_to_string (result)); - gnome_vfs_file_info_unref (info); + _("Failed to get info for document")); return NULL; - } - - if (info->mime_type == NULL) { + } + mime_type = g_file_info_get_content_type (file_info); + + if (mime_type == NULL) { g_set_error (error, EV_DOCUMENT_ERROR, 0, _("Unknown MIME Type")); - gnome_vfs_file_info_unref (info); + g_object_unref (file_info); return NULL; } #ifdef ENABLE_PIXBUF - if (mime_type_supported_by_gdk_pixbuf (info->mime_type)) { + if (mime_type_supported_by_gdk_pixbuf (mime_type)) document = ev_backends_manager_get_document ("image/*"); - } else - document = ev_backends_manager_get_document (info->mime_type); + else + document = ev_backends_manager_get_document (mime_type); #else - document = ev_backends_manager_get_document (info->mime_type); + document = ev_backends_manager_get_document (mime_type); #endif /* ENABLE_PIXBUF */ if (document == NULL) { g_set_error (error, EV_DOCUMENT_ERROR, 0, - _("Unhandled MIME type: “%s”"), info->mime_type); - gnome_vfs_file_info_unref (info); + _("Unhandled MIME type: “%s”"), mime_type); + g_object_unref (file_info); return NULL; } - *compression = get_compression_from_mime_type (info->mime_type); + *compression = get_compression_from_mime_type (mime_type); - gnome_vfs_file_info_unref (info); + g_object_unref (file_info); return document; } diff --git a/libdocument/ev-file-helpers.c b/libdocument/ev-file-helpers.c index dd3b3e1d..20c7bc4e 100644 --- a/libdocument/ev-file-helpers.c +++ b/libdocument/ev-file-helpers.c @@ -29,10 +29,6 @@ #include #include #include -#include -#include -#include -#include #if WITH_GNOME #include @@ -122,6 +118,20 @@ ev_file_helpers_shutdown (void) tmp_dir = NULL; } +GFile * +ev_tmp_file_get (const gchar *prefix) +{ + gchar *path; + GFile *file; + + path = ev_tmp_filename (prefix); + file = g_file_new_for_path (path); + + g_free (path); + + return file; +} + gchar * ev_tmp_filename (const gchar *prefix) { @@ -160,26 +170,41 @@ ev_tmp_filename_unlink (const gchar *filename) } } +void +ev_tmp_file_unlink (GFile *file) +{ + gboolean res; + + if (!file) + return; + + res = g_file_delete (file, NULL, NULL); + if (!res) { + char *uri; + + uri = g_file_get_uri (file); + g_warning ("Unable to delete temp file %s\n", uri); + g_free (uri); + } +} + void ev_tmp_uri_unlink (const gchar *uri) { - GnomeVFSURI *vfs_uri; - gchar *filename; + GFile *file; if (!uri) return; - vfs_uri = gnome_vfs_uri_new (uri); - if (!gnome_vfs_uri_is_local (vfs_uri)) { - g_warning ("Attempting to delete non local uri: %s\n", uri); - gnome_vfs_uri_unref (vfs_uri); + file = g_file_new_for_uri (uri); + if (!g_file_is_native (file)) { + g_warning ("Attempting to delete non native uri: %s\n", uri); + g_object_unref (file); return; } - gnome_vfs_uri_unref (vfs_uri); - - filename = g_filename_from_uri (uri, NULL, NULL); - ev_tmp_filename_unlink (filename); - g_free (filename); + + ev_tmp_file_unlink (file); + g_object_unref (file); } gboolean @@ -187,31 +212,28 @@ ev_xfer_uri_simple (const char *from, const char *to, GError **error) { - GnomeVFSResult result; - GnomeVFSURI *source_uri; - GnomeVFSURI *target_uri; + GFile *source_file; + GFile *target_file; + GError *ioerror; + gboolean result; if (!from) return FALSE; - source_uri = gnome_vfs_uri_new (from); - target_uri = gnome_vfs_uri_new (to); - - result = gnome_vfs_xfer_uri (source_uri, target_uri, - GNOME_VFS_XFER_DEFAULT | GNOME_VFS_XFER_FOLLOW_LINKS, - GNOME_VFS_XFER_ERROR_MODE_ABORT, - GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, - NULL, - NULL); - gnome_vfs_uri_unref (target_uri); - gnome_vfs_uri_unref (source_uri); + source_file = g_file_new_for_uri (from); + target_file = g_file_new_for_uri (to); + + result = g_file_copy (source_file, target_file, + G_FILE_COPY_OVERWRITE, + NULL, NULL, NULL, &ioerror); + + g_object_unref (target_file); + g_object_unref (source_file); - if (result != GNOME_VFS_OK) - g_set_error (error, - G_FILE_ERROR, - G_FILE_ERROR_FAILED, - gnome_vfs_result_to_string (result)); - return (result == GNOME_VFS_OK); + if (!result) { + g_propagate_error (error, ioerror); + } + return result; } diff --git a/libdocument/ev-file-helpers.h b/libdocument/ev-file-helpers.h index 6aad12a2..cd86320e 100644 --- a/libdocument/ev-file-helpers.h +++ b/libdocument/ev-file-helpers.h @@ -18,10 +18,11 @@ * $Id$ */ -#ifndef EPHY_FILE_HELPERS_H -#define EPHY_FILE_HELPERS_H +#ifndef EV_FILE_HELPERS_H +#define EV_FILE_HELPERS_H #include +#include G_BEGIN_DECLS @@ -39,8 +40,10 @@ void ev_file_helpers_init (void); void ev_file_helpers_shutdown (void); +GFile *ev_tmp_file_get (const gchar *prefix); gchar *ev_tmp_filename (const char *prefix); void ev_tmp_filename_unlink (const gchar *filename); +void ev_tmp_file_unlink (GFile *file); void ev_tmp_uri_unlink (const gchar *uri); gboolean ev_xfer_uri_simple (const char *from, @@ -57,4 +60,4 @@ gchar *ev_file_compress (const gchar *uri, G_END_DECLS -#endif /* EPHY_FILE_HELPERS_H */ +#endif /* EV_FILE_HELPERS_H */ diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c index d22a3bb6..f9d17e0b 100644 --- a/shell/ev-jobs.c +++ b/shell/ev-jobs.c @@ -16,9 +16,6 @@ #include #include #include -#include -#include -#include static void ev_job_init (EvJob *job); static void ev_job_class_init (EvJobClass *class); diff --git a/shell/ev-password.c b/shell/ev-password.c index 463d1e71..ae317f02 100644 --- a/shell/ev-password.c +++ b/shell/ev-password.c @@ -22,9 +22,9 @@ #endif #include +#include #include #include -#include #ifdef WITH_KEYRING #include @@ -75,15 +75,15 @@ ev_password_dialog_set_property (GObject *object, char *format; char *markup; char *base_name; - char *file_name; + GFile *file; - switch (prop_id) - { + switch (prop_id) { case PROP_URI: dialog->priv->uri = g_strdup (g_value_get_string (value)); + + file = g_file_new_for_uri (dialog->priv->uri); - file_name = gnome_vfs_format_uri_for_display (dialog->priv->uri); - base_name = g_path_get_basename (file_name); + base_name = g_file_get_basename (file); format = g_strdup_printf ("%s\n\n%s", _("Password required"), _("The document “%s” is locked and requires a password before it can be opened.")); @@ -92,9 +92,9 @@ ev_password_dialog_set_property (GObject *object, gtk_label_set_markup (GTK_LABEL (dialog->priv->label), markup); g_free (base_name); - g_free (file_name); g_free (format); g_free (markup); + g_object_unref (file); ev_password_search_in_keyring (dialog, dialog->priv->uri); break; @@ -256,7 +256,7 @@ ev_password_dialog_save_password (EvPasswordDialog *dialog) attribute.value.string = g_strdup (dialog->priv->uri); g_array_append_val (attributes, attribute); - unescaped_uri = gnome_vfs_unescape_string_for_display (dialog->priv->uri); + unescaped_uri = g_uri_unescape_string (dialog->priv->uri, NULL); name = g_strdup_printf (_("Password for document %s"), unescaped_uri); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->priv->check_default))) { diff --git a/shell/ev-sidebar-attachments.c b/shell/ev-sidebar-attachments.c index 5d2beff3..7fb7f00e 100644 --- a/shell/ev-sidebar-attachments.c +++ b/shell/ev-sidebar-attachments.c @@ -406,7 +406,8 @@ ev_sidebar_attachments_drag_data_get (GtkWidget *widget, EvAttachment *attachment; GtkTreePath *path; GtkTreeIter iter; - gchar *uri, *filename; + GFile *file; + gchar *filename; GError *error = NULL; path = (GtkTreePath *) l->data; @@ -420,12 +421,16 @@ ev_sidebar_attachments_drag_data_get (GtkWidget *widget, filename = g_build_filename (ev_tmp_dir (), ev_attachment_get_name (attachment), NULL); + file = g_file_new_for_path (filename); + g_free (filename); - uri = g_filename_to_uri (filename, NULL, NULL); + if (ev_attachment_save (attachment, file, &error)) { + gchar *uri; - if (ev_attachment_save (attachment, filename, &error)) { + uri = g_file_get_uri (file); g_string_append (uri_list, uri); g_string_append_c (uri_list, '\n'); + g_free (uri); } if (error) { @@ -433,8 +438,8 @@ ev_sidebar_attachments_drag_data_get (GtkWidget *widget, g_error_free (error); } - g_free (uri); gtk_tree_path_free (path); + g_object_unref (file); g_object_unref (attachment); } diff --git a/shell/ev-window-title.c b/shell/ev-window-title.c index 427e6961..b43775a6 100644 --- a/shell/ev-window-title.c +++ b/shell/ev-window-title.c @@ -21,8 +21,8 @@ #include "ev-window-title.h" #include "ev-backends-manager.h" +#include #include -#include /* Known backends (for bad extensions fix) */ #define EV_BACKEND_PS "psdocument" @@ -65,12 +65,12 @@ ev_window_title_new (EvWindow *window) static char * get_filename_from_uri (const char *uri) { + GFile *file; char *filename; - char *display_name; - - display_name = gnome_vfs_format_uri_for_display (uri); - filename = g_path_get_basename (display_name); - g_free (display_name); + + file = g_file_new_for_uri (uri); + filename = g_file_get_basename (file); + g_object_unref (file); return filename; } diff --git a/shell/ev-window.c b/shell/ev-window.c index 9f9924ba..0ec0533b 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -83,9 +83,7 @@ #include #include #include -#include -#include -#include +#include #include #include @@ -1301,30 +1299,20 @@ ev_window_clear_print_settings_file (EvWindow *ev_window) static void ev_window_clear_temp_file (EvWindow *ev_window) { - GnomeVFSURI *uri; - gchar *filename; - const gchar *tempdir; + GFile *file, *tempdir; if (!ev_window->priv->uri) return; - uri = gnome_vfs_uri_new (ev_window->priv->uri); - if (!gnome_vfs_uri_is_local (uri)) { - gnome_vfs_uri_unref (uri); - return; - } - gnome_vfs_uri_unref (uri); + file = g_file_new_for_uri (ev_window->priv->uri); + tempdir = g_file_new_for_path (g_get_tmp_dir ()); - filename = g_filename_from_uri (ev_window->priv->uri, NULL, NULL); - if (!filename) - return; - - tempdir = g_get_tmp_dir (); - if (g_ascii_strncasecmp (filename, tempdir, strlen (tempdir)) == 0) { - g_unlink (filename); + if (g_file_contains_file (tempdir, file)) { + g_file_delete (file, NULL, NULL); } - g_free (filename); + g_object_unref (file); + g_object_unref (tempdir); } /* This callback will executed when load job will be finished. @@ -1404,15 +1392,16 @@ ev_window_load_job_cb (EvJobLoad *job, if (job->error->domain == EV_DOCUMENT_ERROR && job->error->code == EV_DOCUMENT_ERROR_ENCRYPTED) { - gchar *base_name, *file_name; + GFile *file; + gchar *base_name; setup_view_from_metadata (ev_window); - file_name = gnome_vfs_format_uri_for_display (job->uri); - base_name = g_path_get_basename (file_name); + file = g_file_new_for_uri (job->uri); + base_name = g_file_get_basename (file); ev_password_view_set_file_name (EV_PASSWORD_VIEW (ev_window->priv->password_view), base_name); - g_free (file_name); + g_object_unref (file); g_free (base_name); ev_window_set_page_mode (ev_window, PAGE_MODE_PASSWORD); @@ -1473,27 +1462,14 @@ ev_window_close_dialogs (EvWindow *ev_window) ev_window->priv->properties = NULL; } -static gint -open_xfer_update_progress_callback (GnomeVFSAsyncHandle *handle, - GnomeVFSXferProgressInfo *info, - EvWindow *ev_window) -{ - switch (info->status) { - case GNOME_VFS_XFER_PROGRESS_STATUS_OK: - if (info->phase == GNOME_VFS_XFER_PHASE_COMPLETED) { - ev_job_queue_add_job (ev_window->priv->load_job, EV_JOB_PRIORITY_HIGH); - } - - return 1; - case GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR: - case GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE: - case GNOME_VFS_XFER_PROGRESS_STATUS_DUPLICATE: - return 1; - default: - g_assert_not_reached (); - } - - return 0; +static void +window_open_file_copy_ready_cb (GFile *source, + GAsyncResult *async_result, + EvWindow *ev_window) +{ + g_file_copy_finish (source, async_result, NULL); + ev_job_queue_add_job (ev_window->priv->load_job, EV_JOB_PRIORITY_HIGH); + g_object_unref (source); } void @@ -1505,8 +1481,8 @@ ev_window_open_uri (EvWindow *ev_window, gboolean unlink_temp_file, const gchar *print_settings) { - GnomeVFSURI *source_uri; - GnomeVFSURI *target_uri; + GFile *source_file; + GFile *target_file; if (ev_window->priv->uri && g_ascii_strcasecmp (ev_window->priv->uri, uri) == 0) { @@ -1538,48 +1514,34 @@ ev_window_open_uri (EvWindow *ev_window, G_CALLBACK (ev_window_load_job_cb), ev_window); - source_uri = gnome_vfs_uri_new (uri); - if (!gnome_vfs_uri_is_local (source_uri) && !ev_window->priv->local_uri) { - GnomeVFSAsyncHandle *handle; - GList *slist = NULL; - GList *tlist = NULL; - char *tmp_name; - char *base_name; + source_file = g_file_new_for_uri (uri); + if (!g_file_is_native (source_file) && !ev_window->priv->local_uri) { + char *tmp_name; + char *base_name; /* We'd like to keep extension of source uri since * it helps to resolve some mime types, say cbz */ tmp_name = ev_tmp_filename (NULL); - base_name = gnome_vfs_uri_extract_short_name (source_uri); + base_name = g_file_get_basename (source_file); ev_window->priv->local_uri = g_strconcat ("file:", tmp_name, "-", base_name, NULL); ev_job_load_set_uri (EV_JOB_LOAD (ev_window->priv->load_job), ev_window->priv->local_uri); g_free (base_name); g_free (tmp_name); - target_uri = gnome_vfs_uri_new (ev_window->priv->local_uri); - - slist = g_list_prepend (slist, source_uri); - tlist = g_list_prepend (tlist, target_uri); - gnome_vfs_async_xfer (&handle, slist, tlist, - GNOME_VFS_XFER_DEFAULT | GNOME_VFS_XFER_FOLLOW_LINKS, - GNOME_VFS_XFER_ERROR_MODE_ABORT, - GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, - GNOME_VFS_PRIORITY_DEFAULT, - (GnomeVFSAsyncXferProgressCallback) - open_xfer_update_progress_callback, - ev_window, - NULL, NULL); - - g_list_free (slist); - g_list_free (tlist); - gnome_vfs_uri_unref (target_uri); - gnome_vfs_uri_unref (source_uri); - + target_file = g_file_new_for_uri (ev_window->priv->local_uri); + + g_file_copy_async (source_file, target_file, + 0, G_PRIORITY_DEFAULT, NULL, + NULL, NULL, /* no progress callback */ + (GAsyncReadyCallback) window_open_file_copy_ready_cb, + ev_window); + g_object_unref (target_file); return; } - gnome_vfs_uri_unref (source_uri); + g_object_unref (source_file); ev_job_queue_add_job (ev_window->priv->load_job, EV_JOB_PRIORITY_HIGH); } @@ -1937,79 +1899,53 @@ ev_window_setup_recent (EvWindow *ev_window) g_list_free (items); } -static gint -save_xfer_update_progress_callback (GnomeVFSAsyncHandle *handle, - GnomeVFSXferProgressInfo *info, - GnomeVFSURI *tmp_uri) -{ - switch (info->status) { - case GNOME_VFS_XFER_PROGRESS_STATUS_OK: - if (info->phase == GNOME_VFS_XFER_PHASE_COMPLETED) { - gchar *uri; - - uri = gnome_vfs_uri_to_string (tmp_uri, 0); - ev_tmp_uri_unlink (uri); - g_free (uri); - gnome_vfs_uri_unref (tmp_uri); - } - return 1; - case GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR: - if (info->vfs_status != GNOME_VFS_OK) { - GtkWidget *dialog; - gchar *uri; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - _("The file could not be saved as “%s”."), - info->target_name); - gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), - gnome_vfs_result_to_string (info->vfs_status)); - - g_signal_connect (dialog, "response", - G_CALLBACK (gtk_widget_destroy), - NULL); - gtk_widget_show (dialog); - - uri = gnome_vfs_uri_to_string (tmp_uri, 0); - ev_tmp_uri_unlink (uri); - g_free (uri); - gnome_vfs_uri_unref (tmp_uri); - } - return 1; - case GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE: - case GNOME_VFS_XFER_PROGRESS_STATUS_DUPLICATE: - return 1; - default: - g_assert_not_reached (); +static void +window_save_file_copy_ready_cb (GFile *src, + GAsyncResult *async_result, + GFile *dst) +{ + EvWindow *window; + GtkWidget *dialog; + gchar *name; + GError *error = NULL; + + if (g_file_copy_finish (src, async_result, &error)) { + ev_tmp_file_unlink (src); + return; } - return 0; + window = g_object_get_data (G_OBJECT (dst), "ev-window"); + name = g_file_get_basename (dst); + dialog = gtk_message_dialog_new (GTK_WINDOW (window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + _("The file could not be saved as “%s”."), + name); + gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), + error->message); + g_signal_connect (dialog, "response", + G_CALLBACK (gtk_widget_destroy), + NULL); + gtk_widget_show (dialog); + ev_tmp_file_unlink (src); + + g_free (name); + g_error_free (error); } static void -ev_window_save_remote (EvWindow *ev_window, - GnomeVFSURI *src, - GnomeVFSURI *dst) +ev_window_save_remote (EvWindow *ev_window, + GFile *src, + GFile *dst) { - GnomeVFSAsyncHandle *handle; - GList *slist = NULL; - GList *tlist = NULL; - - slist = g_list_prepend (slist, src); - tlist = g_list_prepend (tlist, dst); - gnome_vfs_async_xfer (&handle, slist, tlist, - GNOME_VFS_XFER_DEFAULT | GNOME_VFS_XFER_FOLLOW_LINKS, - GNOME_VFS_XFER_ERROR_MODE_ABORT, - GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, - GNOME_VFS_PRIORITY_DEFAULT, - (GnomeVFSAsyncXferProgressCallback) - save_xfer_update_progress_callback, - gnome_vfs_uri_ref (src), - NULL, NULL); - g_list_free (slist); - g_list_free (tlist); + g_object_set_data (G_OBJECT (dst), "ev-window", ev_window); + g_file_copy_async (src, dst, + G_FILE_COPY_OVERWRITE, + G_PRIORITY_DEFAULT, NULL, + NULL, NULL, /* no progress callback */ + (GAsyncReadyCallback) window_save_file_copy_ready_cb, + dst); } static void @@ -2075,7 +2011,7 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window) { GtkWidget *fc; gchar *base_name; - gchar *file_name; + GFile *file; #if GLIB_CHECK_VERSION (2, 13, 3) const gchar *folder; #else @@ -2093,9 +2029,9 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window) gtk_dialog_set_default_response (GTK_DIALOG (fc), GTK_RESPONSE_OK); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (fc), FALSE); - gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (fc), TRUE); - file_name = gnome_vfs_format_uri_for_display (ev_window->priv->uri); - base_name = g_path_get_basename (file_name); + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (fc), TRUE); + file = g_file_new_for_uri (ev_window->priv->uri); + base_name = g_file_get_basename (file); gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (fc), base_name); #if GLIB_CHECK_VERSION (2, 13, 3) @@ -2108,7 +2044,7 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window) free (folder); #endif - g_free (file_name); + g_object_unref (file); g_free (base_name); g_signal_connect (fc, "response", @@ -4784,31 +4720,48 @@ static void launch_action (EvWindow *window, EvLinkAction *action) { const char *filename = ev_link_action_get_filename (action); - char *uri = NULL; + const char *content_type; + GAppInfo *app_info; + GFileInfo *file_info; + GFile *file; + GList *file_list = NULL; + + if (filename == NULL) + return; - if (filename && g_path_is_absolute (filename)) { - uri = gnome_vfs_get_uri_from_local_path (filename); + if (g_path_is_absolute (filename)) { + file = g_file_new_for_path (filename); } else { - GnomeVFSURI *base_uri, *resolved_uri; - - base_uri = gnome_vfs_uri_new (window->priv->uri); - if (base_uri && filename) { - resolved_uri = gnome_vfs_uri_resolve_relative (base_uri, filename); - if (resolved_uri) { - uri = gnome_vfs_uri_to_string (resolved_uri, GNOME_VFS_URI_HIDE_NONE); - gnome_vfs_uri_unref (resolved_uri); - } - gnome_vfs_uri_unref (base_uri); - } + GFile *base_file; + + base_file = g_file_new_for_uri (window->priv->uri); + file = g_file_resolve_relative_path (base_file, + filename); + + g_object_unref (base_file); } - - if (uri) { - gnome_vfs_url_show (uri); - } else { - gnome_vfs_url_show (filename); + + file_info = g_file_query_info (file, + G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, + 0, NULL, NULL); + if (file_info == NULL) { + g_object_unref (file); + return; } + + content_type = g_file_info_get_content_type (file_info); + app_info = g_app_info_get_default_for_type (content_type, TRUE); + + file_list = g_list_append (file_list, file); - g_free (uri); + /* FIXME: should we use a GAppLaunchContext? */ + g_app_info_launch (app_info, file_list, + NULL, NULL); + + g_list_free (file_list); + g_object_unref (app_info); + g_object_unref (file_info); + g_object_unref (file); /* According to the PDF spec filename can be an executable. I'm not sure allowing to launch executables is a good idea though. -- marco */ @@ -4818,37 +4771,47 @@ static void launch_external_uri (EvWindow *window, EvLinkAction *action) { const gchar *uri = ev_link_action_get_uri (action); - GnomeVFSResult result = gnome_vfs_url_show (uri); - GtkWidget *dialog; - gchar* message = NULL; - - switch(result) { - case GNOME_VFS_OK: - break; - case GNOME_VFS_ERROR_BAD_PARAMETERS: - message = _("Invalid URI: “%s”"); - break; - case GNOME_VFS_ERROR_NOT_SUPPORTED: - message = _("Unsupported URI: “%s”"); - break; - default: - message = _("Unknown error"); + const char *content_type; + GFile *file; + GFileInfo *file_info; + GAppInfo *app; + GList *file_list = NULL; + GError *error = NULL; + + file = g_file_new_for_uri (uri); + file_info = g_file_query_info (file, + G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, + 0, NULL, NULL); + if (file_info == NULL) { + g_object_unref (file); + return; } - if(message) { + + content_type = g_file_info_get_content_type (file_info); + app = g_app_info_get_default_for_type (content_type, TRUE); + g_object_unref (file_info); + + file_list = g_list_append (file_list, file); + + if (!g_app_info_launch (app, file_list, NULL, &error)) { + GtkWidget *dialog; + dialog = gtk_message_dialog_new (GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Unable to open external link")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), - message, uri); + error->message, uri); g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); gtk_widget_show (dialog); - } - return; + + g_object_unref (app); + g_object_unref (file); + g_list_free (file_list); } static void @@ -4980,8 +4943,8 @@ image_save_dialog_response_cb (GtkWidget *fc, gint response_id, EvWindow *ev_window) { - GnomeVFSURI *target_uri; - gboolean is_local; + GFile *target_file; + gboolean is_native; GError *error = NULL; GdkPixbuf *pixbuf; gchar *uri; @@ -5020,11 +4983,11 @@ image_save_dialog_response_cb (GtkWidget *fc, g_strfreev(extensions); file_format = gdk_pixbuf_format_get_name (format); - target_uri = gnome_vfs_uri_new (uri_extension); - is_local = gnome_vfs_uri_is_local (target_uri); + target_file = g_file_new_for_uri (uri_extension); + is_native = g_file_is_native (target_file); - if (is_local) { - filename = g_filename_from_uri (uri_extension, NULL, NULL); + if (is_native) { + filename = g_file_get_path (target_file); } else { filename = ev_tmp_filename ("saveimage"); } @@ -5038,6 +5001,7 @@ image_save_dialog_response_cb (GtkWidget *fc, ev_document_doc_mutex_unlock (); gdk_pixbuf_save (pixbuf, filename, file_format, &error, NULL); + g_free (file_format); g_object_unref (pixbuf); if (error) { @@ -5046,25 +5010,23 @@ image_save_dialog_response_cb (GtkWidget *fc, error); g_error_free (error); g_free (filename); - gnome_vfs_uri_unref (target_uri); + g_object_unref (target_file); gtk_widget_destroy (fc); return; } - if (!is_local) { - GnomeVFSURI *source_uri; - gchar *local_uri; - - local_uri = g_filename_to_uri (filename, NULL, NULL); - source_uri = gnome_vfs_uri_new (local_uri); - g_free (local_uri); - ev_window_save_remote (ev_window, source_uri, target_uri); - gnome_vfs_uri_unref (source_uri); + if (!is_native) { + GFile *source_file; + + source_file = g_file_new_for_uri (filename); + + ev_window_save_remote (ev_window, source_file, target_file); + g_object_unref (source_file); } g_free (filename); - gnome_vfs_uri_unref (target_uri); + g_object_unref (target_file); gtk_widget_destroy (fc); } @@ -5147,12 +5109,12 @@ attachment_save_dialog_response_cb (GtkWidget *fc, gint response_id, EvWindow *ev_window) { - GnomeVFSURI *target_uri; + GFile *target_file; gchar *uri; GList *l; GtkFileChooserAction fc_action; gboolean is_dir; - gboolean is_local; + gboolean is_native; if (response_id != GTK_RESPONSE_OK) { gtk_widget_destroy (fc); @@ -5160,69 +5122,61 @@ attachment_save_dialog_response_cb (GtkWidget *fc, } uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (fc)); - target_uri = gnome_vfs_uri_new (uri); + target_file = g_file_new_for_uri (uri); g_object_get (G_OBJECT (fc), "action", &fc_action, NULL); is_dir = (fc_action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); - is_local = gnome_vfs_uri_is_local (target_uri); + is_native = g_file_is_native (target_file); for (l = ev_window->priv->attach_list; l && l->data; l = g_list_next (l)) { EvAttachment *attachment; - gchar *filename; + GFile *save_to; GError *error = NULL; attachment = (EvAttachment *) l->data; - if (is_local) { + if (is_native) { if (is_dir) { - filename = g_strjoin ("/", uri, - ev_attachment_get_name (attachment), - NULL); + save_to = g_file_get_child (target_file, + ev_attachment_get_name (attachment)); } else { - filename = g_strdup (uri); + save_to = g_object_ref (target_file); } } else { - filename = ev_tmp_filename ("saveattachment"); + save_to = ev_tmp_file_get ("saveattachment"); } - ev_attachment_save (attachment, filename, &error); + ev_attachment_save (attachment, save_to, &error); if (error) { ev_window_error_message (GTK_WINDOW (ev_window), _("The attachment could not be saved."), error); g_error_free (error); - g_free (filename); + g_object_unref (save_to); continue; } - if (!is_local) { - GnomeVFSURI *src_uri; - GnomeVFSURI *dest_uri; - gchar *local_uri; + if (!is_native) { + GFile *dest_file; if (is_dir) { - const gchar *name = ev_attachment_get_name (attachment); - - dest_uri = gnome_vfs_uri_append_file_name (target_uri, - name); + dest_file = g_file_get_child (target_file, + ev_attachment_get_name (attachment)); } else { - dest_uri = gnome_vfs_uri_ref (target_uri); + dest_file = g_object_ref (target_file); } - - local_uri = g_filename_to_uri (filename, NULL, NULL); - src_uri = gnome_vfs_uri_new (local_uri); - g_free (local_uri); - ev_window_save_remote (ev_window, src_uri, dest_uri); - gnome_vfs_uri_unref (src_uri); - gnome_vfs_uri_unref (dest_uri); + + ev_window_save_remote (ev_window, save_to, dest_file); + + g_object_unref (dest_file); } - g_free (filename); + g_object_unref (save_to); } g_free (uri); - gnome_vfs_uri_unref (target_uri); + g_object_unref (target_file); gtk_widget_destroy (fc); } diff --git a/shell/main.c b/shell/main.c index e4c2d1b7..e0fc9933 100644 --- a/shell/main.c +++ b/shell/main.c @@ -35,9 +35,6 @@ #include #endif -#include -#include - #ifdef ENABLE_DBUS #include #endif @@ -203,10 +200,13 @@ load_files (const char **files, char *uri; char *label; GValue *old = NULL; + GFile *file; - uri = gnome_vfs_make_uri_from_shell_arg (files[i]); + file = g_file_new_for_commandline_arg (files[i]); + uri = g_file_get_uri (file); + g_object_unref (file); - label = strchr (uri, GNOME_VFS_URI_MAGIC_CHR); + label = strchr (uri, '#'); if (label) { GValue *new; @@ -282,9 +282,13 @@ load_files_remote (const char **files, for (i = 0; files[i]; i++) { const char *page_label; + GFile *file; char *uri; - uri = gnome_vfs_make_uri_from_shell_arg (files[i]); + file = g_file_new_for_commandline_arg (files[i]); + uri = g_file_get_uri (file); + g_object_unref (file); + page_label = ev_page_label ? ev_page_label : ""; if (!dbus_g_proxy_call (remote_object, "OpenURI", &error, @@ -353,8 +357,6 @@ main (int argc, char *argv[]) return 1; } g_option_context_free (context); - - gnome_vfs_init (); accel_filename = g_build_filename (ev_dot_dir (), "accels", NULL); gtk_accel_map_load (accel_filename); diff --git a/thumbnailer/evince-thumbnailer.c b/thumbnailer/evince-thumbnailer.c index b192d26e..d4d1a248 100644 --- a/thumbnailer/evince-thumbnailer.c +++ b/thumbnailer/evince-thumbnailer.c @@ -17,11 +17,6 @@ */ #include -#include -#include -#include -#include -#include #include #include @@ -29,6 +24,8 @@ #include #include +#include + #include #include @@ -138,6 +135,7 @@ main (int argc, char *argv[]) const char *output; int size; char *uri; + GFile *file; if (argc <= 2 || argc > 5 || strcmp (argv[1], "-h") == 0 || strcmp (argv[1], "--help") == 0) { @@ -162,13 +160,14 @@ main (int argc, char *argv[]) if (!g_thread_supported ()) g_thread_init (NULL); - - gnome_vfs_init (); ev_backends_manager_init (); - uri = gnome_vfs_make_uri_from_shell_arg (input); + file = g_file_new_for_commandline_arg (input); + uri = g_file_get_uri (file); document = evince_thumbnailer_get_document (uri); + + g_object_unref (file); g_free (uri); if (!document) { -- 2.43.0