On Tue, 2011-09-06 at 17:44 -0500, Federico Mena Quintero wrote: > Hi, everyone, > > There is a patch in [1], by Jon McCann, to make the shortcuts bar in > GtkFileChooser be pretty much the same as the one in Nautilus. > > Rather than patch the wobbly edifice that is gtkfilechooserdefault.c, > this sounds like the perfect time to actually pull out the shortcuts bar > as a public class of its own, that is shared by both the file chooser > and Nautilus. > > My plan is this: > > 1. Copy nautilus-places-sidebar.[ch] into the GTK+ sources. > > 2. s/nautilus/gtk > > 3. Remove obvious nautilus-isms like the use of nautilus_bookmark, which > should be easy enough to replicate in GTK+ (or with things which already > happen through the file chooser's code).
NautilusBookmarks is a horrible API that should be taken out in the backyard and be put down quitely. > 4. See what common, public interfaces we need. For example, > > nautilus_window_set_initiated_unmount (sidebar->window, TRUE); > > seems like it could be replaced with a signal on the GtkPlacesSidebar > class, and then Nautilus can start a spinner or whatever when an unmount > operation starts. Another common interface would be something like > gtk_places_sidebar_select_path (sidebar, "file:///foo/selected") to > highlight a particular item. Sounds cool > 5. See what nautilus-isms *should* be doable with plain GIO, and see if > there is anything else that Nautilus needs to do about them via signals; > maybe for something like > > nautilus_file_operations_mount_volume_full (NULL, volume, > volume_mounted_cb, > G_OBJECT (sidebar)); I did a sweep through it and it seems that the sidebar isn't doing much actual I/O and thus does not really touch the nautilus async I/O machinery. That means it should be quite doable to untangle it from nautilus like this. I might have missed something though. > 6. See what things should be available or not in the file chooser... > when dropping files on the shortcuts bar, Nautilus can do > > nautilus_file_operations_copy_move (uris, NULL, drop_uri, > real_action, GTK_WIDGET (tree_view), > NULL, NULL); > > > Same thing for > > nautilus_file_operations_empty_trash (GTK_WIDGET (sidebar->window)); These are availible via dbus on org.gnome.Nautilus.FileOperations, so could potentially be used from Gtk+ too. That sort of places a dependency on nautilus from Gtk+ though, and it will only work under Gnome. > I'm starting a branch in GTK+, "places-sidebar" to do this. Comments > are appreciated, especially from Nautilus hackers who may know dark > places in this code well. > > One little caveat: that part of Nautilus is GPL, and GTK+ is LGPL, > although it *seems* that the places sidebar code may initially have come > from GTK+ and then reworked heavily. I haven't checked the history > closely. What do we do about this? Hmm, cosimo would know this best. _______________________________________________ gtk-devel-list mailing list gtk-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-devel-list