Trouble with gnome_vfs_volume_manager_get_volume_for_path()



Hi, Alex,

I have an interesting problem with gnome-vfs-volume-monitor.  When
GtkFileChooser is set to folder mode, it displays a folder tree
constrained to the volume of the currently selected folder.  For
example, say you mount a Red Hat distribution CD.  Then, if the current
folder is /mnt/cdrom/RedHat/RPMS, the tree in the file chooser would
show this:

	+ dosutils
	+ images
	+ isolinux
	+ RedHat
	  + base
	  + RPMS   <-- selected folder

This is quite nice, because showing the whole filesystem would look like

	+ bin
	+ boot
	+ dev
	+ etc
	+ home
	+ lib
	+ ... etc ...
	+ mnt
	  + flash
	  + floppy
	  + cdrom
	    + dosutils
	    + images
	    + isolinux
	    + RedHat
	      + base
	      + RPMS  <-- selected folder

which is plain ugly.

To do the constrained view, the code looks something like this:

current_folder_changed_callback ()
{
  vol = gnome_vfs_volume_manager_get_volume_for_path (current_folder);
  base = gnome_vfs_volume_get_activation_uri (vol);

  show_tree_starting_at (base);
}

However, something interesting happens with my /home partition. 
Gnome-vfs-volume-monitor sees it as a volume on its own which is not
user visible.  Therefore, the volume list in the file chooser does not
pay attention to it.  However, when I do

  gnome_vfs_volume_manager_get_volume_for_path ("/home/federico/foo");

I get the /home volume, which of course has "/home" as the base path or
activation URI.  From the user's viewpoint, it doesn't make sense to
constrain the folder tree to the stuff inside /home, as *that* is not
one of the available volumes --- the user would access that from the /
volume, which *is* user-visible.

So my question is, how do I get a user-visible volume that corresponds
to a given path?  Or should I just do this:

  tmp_path = current_folder_path;

  do {
    vol = gnome_vfs_volume_manager_get_volume_for_path (tmp_path);
    tmp_path = get_parent_path (tmp_path);
  } while (!gnome_vfs_volume_is_user_visible());

  base = gnome_vfs_volume_get_activation_uri (vol);
  ... etc ...

Thanks,

  Federico




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]