[Installit-dev] Download wizard problems

Benedikt Meurer benny at xfce.org
Sat Mar 18 12:40:24 CET 2006


Jannis Pohlmann wrote:
>>>I tried to improve the responsiveness of the download wizard today.
>>>During this, I noticed something very annoying: It is impossible to
>>>cancel downloads. This hasn't been introduced with any version, it's
>>>always been there!
>>>
>>>The 'urllib' module allows for hooking into the download process.
>>>However, it's a non-async transfer which makes it hard to avoid a
>>>blocked user interface. 
>>>
>>>Do you have any ideas on how this could be solved perhaps? I don't
>>>know much about threaded programming, subprocesses and
>>>glib/gobject/gtk main loops, but perhaps you do.
>>
>>You could simply run the download in a separate thread and "send"
>>updates about the progress via GLib idle sources to the GUI. The
>>cancellation check could be done through a volatile variable (i.e.
>>check the cancel variable every now and then in the download threads,
>>via urllib hooks or whatever... setting it from the main thread when
>>the user hits Cancel). This is the way asynchronous jobs are done in
>>Thunar.
> 
> 
> At least checking a volatile variable in the progress callback won't be
> a problem. Concerning the threading and GLib idle sources - I don't
> have a clue about how to do it. Below are some links to related
> functions. Perhaps you can find out which ones I need (PyGTK seems to
> be very close to the C API):
> 
> http://pygtk.org/pygtk2reference/gobject-functions.html
> http://pygtk.org/pygtk2reference/class-gobjectmaincontext.html
> http://pygtk.org/pygtk2reference/class-gobjectmainloop.html
> http://pygtk.org/pygtk2reference/gdk-functions.html

http://pygtk.org/pygtk2reference/gobject-functions.html#function-gobject--idle-add

> Another thing is: The urllib.urlretrieve() method I am using to
> download the files allows no termination. Destroying the dialog should
> terminate it anyway, I think, but right then we would have this jumping
> boxes again.

Why is it terminated when the dialog is destroyed? Can't you decouple it 
from the dialog's lifecycle?

> Regards,
> Jannis

Benedikt

-- 
Xfce  --  small, stable, fast  --  http://www.xfce.org/

           (__)
           (oo)
     /------\/
    / |    ||
   *  /\---/\
      ~~   ~~
...."Have you mooed today?"...



More information about the Installit-dev mailing list