… or: which ones are left.
ThunarVFS is used almost everywhere inside Thunar. All appearances in the code have to be replaced with equivalent (or improved) implementations based on GIO. In order to do that, we first have to collect information about all the ThunarVFS references in the code. Afterwards, we can determine what to do with each reference.
It's probably a good idea to look at ThunarFolder/ThunarFile at the very end because I already have an idea on how to deal with them. Deciding what to do with the other ThunarVFS references first could have interesting implications on ThunarFolder/ThunarFile.
Each instance of the
ThunarFile class represents one file/node in the filesystem. It wraps
ThunarVfsInfo with a huge number of convenience functions and macros.
Of course all these functions could easily be ported to GIO. A number of function signatures
will have to be changed to get rid of ThunarVFS references. However, we have to do something about
GFileInfo queries inside
First of all, the constructor should be split up from
ThunarFile *thunar_file_get_for_info (ThunarVfsInfo *info); ThunarFile *thunar_file_get_for_path (ThunarVfsPath *path, GError **error); ThunarFile *thunar_file_get_for_uri (const gchar *uri, GError **error);
into something like this:
ThunarFile *thunar_file_get (GFile *file); gboolean thunar_file_load (ThunarFile *file, GCancellable *cancellable, GError **error);
Maybe alternatively add an asynchronous way to load files:
void thunar_file_load_async (ThunarFile *file, GCancellable *cancellable, GAsyncReadyCallback *callback, gpointer user_data); gboolean thunar_file_load_finish (ThunarFile *file, GAsyncResult *result, GError **error); gboolean thunar_file_is_loaded (ThunarFile *file);
Has references to
Make sure to setup GIO correctly by following these steps:
Thunarx has a few references to ThunarVFS in
ThunarxFileInfo which have to be replaced
with GIO equivalents:
ThunarVfsInfo *thunarx_file_info_get_vfs_info (ThunarxFileInfo *file_info)
ThunarVfsInfo *(*get_vfs_info) (ThunarxFileInfo *file_info)in
There is a number of extensions for Thunar, like
Most of them have references to ThunarVFS or rely on ThunarVFS to work (as is the case with thumbnailers which don't support GIO).
thunar-volman uses ThunarVFS everywhere and will have to be ported to GIO as well.