Table 2. Comparison of GnomeVFS and GIO concepts
GnomeVFS | GIO |
---|---|
GnomeVFSURI | GFile |
GnomeVFSFileInfo | GFileInfo |
GnomeVFSResult | GError, with G_IO_ERROR values |
GnomeVFSHandle & GnomeVFSAsyncHandle | GInputStream or GOutputStream |
GnomeVFSDirectoryHandle | GFileEnumerator |
mime type | content type |
GnomeVFSMonitor | GFileMonitor |
GnomeVFSVolumeMonitor | GVolumeMonitor |
GnomeVFSVolume | GMount |
GnomeVFSDrive | GVolume |
- | GDrive |
GnomeVFSContext | GCancellable |
gnome_vfs_async_cancel | g_cancellable_cancel |
The handling of trashed files has been changed in GIO, compared
to gnome-vfs. gnome-vfs has a home-grown trash implementation that
predates the freedesktop.org Desktop Trash Can specification
that is implemented in GIO. The location for storing trashed files
has changed from $HOME/.Trash
to
$HOME/.local/share/Trash
(or more correctly
$XDG_DATA_HOME/Trash
), which means that
there is a need for migrating files that have been trashed by
gnome-vfs to the new location.
In gnome-vfs, the trash://
scheme offering a
merged view of all trash directories was implemented in nautilus,
and trash-handling applications had to find and monitor all trash
directories themselves. With GIO, the trash://
implementation has been moved to gvfs and applications can simply
monitor that location:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
static void file_changed (GFileMonitor *file_monitor, GFile *child, GFile *other_file, GFileMonitorEvent event_type, gpointer user_data) { switch (event_type) { case G_FILE_MONITOR_EVENT_DELETED: g_print ("'%s' removed from trash\n", g_file_get_basename (child)); break; case G_FILE_MONITOR_EVENT_CREATED: g_print ("'%s' added to trash\n", g_file_get_basename (child)); break; default: ; } } static void start_monitoring_trash (void) { GFile *file; GFileMonitor *monitor; file = g_file_new_for_uri ("trash://"); monitor = g_file_monitor_directory (file, 0, NULL, NULL); g_object_unref (file); g_signal_connect (monitor, "changed", G_CALLBACK (file_changed), NULL); /* ... */ } |
GIO exposes some useful metadata about trashed files. There are
trash::orig-path and trash::deletion-date attributes. The
standard::icon attribute of the trash://
itself provides a suitable icon for displaying the trash can on
the desktop. If you are using this icon, make sure to monitor
this attribute for changes, since the icon may be updated to
reflect that state of the trash can.
Moving a file to the trash is much simpler with GIO. Instead of
using gnome_vfs_find_directory()
with GNOME_VFS_DIRECTORY_KIND_TRASH
to find out where to move the trashed file, just use the g_file_trash()
function.