Wow Adam!! That was superfast! Appreciate your prompt response. So now, I have a question. If this update_info_full() method gets called for each and every file, then would having such a plugin make sense? Every directory load would start 'n' async threads reading its contents recursively, where n is the number of folders contained within that folder.
I have started to have second thoughts over my plugin now :( Please advise. regards, Seemanta On Sat, May 1, 2010 at 12:09 AM, Adam Plumb <[email protected]> wrote: > hi Seemanta, sorry for the confusion, I changed the > update_file_info_async method to update_file_info_full yesterday, > after sending that email. > > In order to have cached data available to your get_file_items method, > you would probably want to create a dictionary available throughout > your class, something like self.cache that can be accessed from > anywhere. update_file_info_full() will get called for each file in a > directory, and you can start a thread or process to cache/process the > file data. Then when someone right-clicks on a file and > get_file_items is called, you already have the data you need cached. > > Adam > > On Fri, Apr 30, 2010 at 2:35 PM, Seemanta Dutta <[email protected]> > wrote: > > Hi Adam et al, > > I installed the latest nautilus-python from git master but I could not > find > > any update_file_info_async() method in it. Perhaps you are referring to > > update_file_info_full() ? What does the *full* signify in these calls ? > > > > And one more question I had was, assuming I get my data and cache it > using > > the update_file_info_*() method, how do I make it accessible to to > > get_file_items() method when the user actually right-clicks ? This maybe > a > > pretty stupid question but please bear with me, nevertheless. > > > > regards, > > Seemanta > > > > On Wed, Apr 28, 2010 at 7:55 PM, Adam Plumb <[email protected]> wrote: > >> > >> On Wed, Apr 28, 2010 at 10:11 AM, Seemanta Dutta <[email protected]> > >> wrote: > >> > Actually I did not use update_file_info. I used get_file_list() > because > >> > I > >> > derived my class from MenuProvider. Isn't the way I am supposed to do > >> > it? Is > >> > there a better way to do what I have done? Can you please take a look > at > >> > my > >> > code and let me know if that is the case? My script is hosted at: > >> > http://seemanta.net/code/Nautilus_plugin/add-to-rhythmbox_V02.py > >> > > >> > In any case, I shall get the latest stuff from git and let you know > how > >> > it > >> > goes. > >> > > >> > regards, > >> > Seemanta > >> > >> You have done it correctly. Looking at your code, I don't see much > >> you can do to improvie things with just sub-classing MenuProvider. > >> > >> One thing you can do is subclass nautilus.InfoProvider and use the > >> update_file_info (or in the case of git master, > >> update_file_info_async) to collect file information asynchronously > >> when the directory is loaded, and then when the user right-clicks on > >> the file and get_file_items() is called, the information is already > >> there. That may add more complexity than you want to deal with though > >> (for maybe not much benefit). > >> > >> Adam > >> > >> > > >> > On Wed, Apr 28, 2010 at 7:31 PM, Adam Plumb <[email protected]> > wrote: > >> >> > >> >> On Wed, Apr 28, 2010 at 9:18 AM, Seemanta Dutta <[email protected]> > >> >> wrote: > >> >> > Hi Nautilus hackers/users, > >> >> > > >> >> > First of all hats off to all Nautilus hackers. This is such a fine > >> >> > piece > >> >> > of > >> >> > software. I have been using Linux for more than 10 years now and > more > >> >> > particularly Gnome where I find Nautilus extremely well integrated. > >> >> > You > >> >> > guys > >> >> > have done a damn fine job of creating/maintaining Nautilus ! > >> >> > > >> >> > I recently wrote a small python plugin to enqueue files or folders > >> >> > recursively into the rhythmbox play queue. Please find it here: > >> >> > http://seemanta.net/myblog/?p=634. I am not sure if this is the > right > >> >> > place > >> >> > to post this. If there is a dedicated mailing list for python > >> >> > extensions > >> >> > for > >> >> > Nautilus, please let me know. > >> >> > > >> >> > I am however, facing one issue in my script and need your inputs > >> >> > regarding > >> >> > it. Whenever a big folder with several levels of sub-folders and > >> >> > files > >> >> > is > >> >> > selected, there is a high latency in Nautilus during which it seems > >> >> > to > >> >> > become unresponsive. This is because my plugin is creating a list > of > >> >> > files > >> >> > that need to be enqueued and this is done recursively. Is there a > way > >> >> > to > >> >> > overcome this? I agree, that for huge folders, if I right click the > >> >> > delay > >> >> > might be acceptable. But I think if I simply select a folder, the > >> >> > python > >> >> > plugin should not get invoked. > >> >> > > >> >> > Any ideas how to make my script run only in case of a right-click > and > >> >> > not on > >> >> > normal left click selects ? > >> >> > > >> >> > regards, > >> >> > Seemanta > >> >> > > >> >> > > >> >> > >> >> I'm the maintainer for the nautilus-python bindings, and I've been > >> >> doing some work recently to allow for asynchronous IO work in the > >> >> update_file_info method, which I assume is what you are using for > your > >> >> IO. It is still somewhat experimental, but I would appreciate it if > >> >> you could clone git master at > >> >> http://git.gnome.org/browse/nautilus-python and test your extension > >> >> using the new code. If you do that, let me know whether it > alleviates > >> >> the problems you're seeing with your extension. FYI, you should read > >> >> the new documentation in examples/documentation.py to see how to use > >> >> the new features. > >> >> > >> >> Adam > >> >> -- > >> >> nautilus-list mailing list > >> >> [email protected] > >> >> http://mail.gnome.org/mailman/listinfo/nautilus-list > >> > > >> > > > > > >
-- nautilus-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/nautilus-list
