Trouble with gnome_vfs_volume_manager_get_volume_for_path()
- From: Federico Mena Quintero <federico ximian com>
- To: alexl redhat com
- Cc: desktop-devel-list gnome org
- Subject: Trouble with gnome_vfs_volume_manager_get_volume_for_path()
- Date: Fri, 16 Jan 2004 00:29:43 -0600
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]