Re: How does one add an item to the “recently used” file list (from Python)?
- Date: Mon, 10 Oct 2016 11:29:13 -0700
- From: Laurence Gonsalves <laurence@xxxxxxxxxxxxxxx>
- Subject: Re: How does one add an item to the “recently used” file list (from Python)?
On Sat, Oct 8, 2016 at 3:33 PM, infirit <infirit@xxxxxxxxx> wrote:
> Op 10/08/2016 om 11:52 PM schreef Laurence Gonsalves:
>> Is it necessary to use timeout_add? I noticed that I can call
>> add_item before starting the main loop, and it seems to work once the
>> main loop is started. I'm not sure if that's relying on undocumented
>> behavior, however.
> There is no undocumented behaviour, many parts of Gtk and GLib require a
> mainloop to function properly, GtkRecentManager is one of them and
> sending/receiving signals is another.
Sorry if I wasn't clear. I wasn't talking about starting the mainloop.
I was talking about calling add_item *before* starting the mainloop
rather than scheduling the add_item calls from an event handler. Doing
this seems to work, but I'm not sure if it's guaranteed to work or if
it's relying on undocumented behavior.
> You could do that but it relies, imo, on implicit behaviour that if no
> higher tasks are running it should quit. My approach would be that you
> explicitly call Gtk.main_quit when you are done processing the files.
> def on_timeout(manager, files):
> for path in files:
> f = Gio.File.new_for_path(path)
> exists = f.query_exists()
> if exists:
> res = manager.add_item(f.get_uri())
I tried this and it didn't work. It looks like main_quit terminates
the main loop immediately, before the add_item requests even have a
chance to do their job.
> My timeout was five seconds, but it could be one milliseconds so it has
> no noticeable delay when you run it.
Is there any advantage to using a timeout over idle_add? If a timeout
must be used, why not use a zero timeout?
>  https://lazka.github.io/pgi-docs/#Gio-2.0/interfaces/File.html
Thanks for that. I'll update my code to use it.
gtk-list mailing list