[Urwid] Twisted version of generic_main_loop
Ian Ward
ian at excess.org
Sun Sep 14 12:31:49 EDT 2008
Ian Ward wrote:
> Walter Mundt wrote:
>> Ian Ward wrote:
>>> It's a good start. I was hoping this could be done with
>>> get_input_descriptors[1] and get_input_nonblocking[2] instead of using
>>> threads.
>>>
>>> [1] http://excess.org/urwid/reference.html#Screen-get_input_descriptors
>>> [2] http://excess.org/urwid/reference.html#Screen-get_input_nonblocking
>> Done. Also, this version adds a handle_reactor parameter. If False,
>> rather than looping the function simply returns a twisted Deferred that
>> will trigger when the UI shuts down, whether via an ExitMainLoop call
>> (callback True) or a different unhandled exception in one of the
>> handlers passed in (errback).
>
> Great! That was fast, Walter :-)
>
> A couple final suggestions: twisted_main_loop needs a docstring
> explaining what you said above, and the code should be written in a way
> that I can add it to main_loop.py even on systems without twisted
> installed - either only import twisted.(...) inside the functions that
> need those symbols, or handle the ImportError and make twisted_main_loop
> send a helpful error message.
>
> Ian
I have added your code with some modifications to the hg repo:
https://excess.org/hg/urwid/file/2bd2ab311547/urwid/main_loop.py
Some initial testing suggests that the error handling isn't quite
behaving properly. I tried running:
urwid.generic_main_loop(urwid.SolidFill('x'))
and compared it to:
urwid.twisted_main_loop(urwid.SolidFill('x'))
The first one fails out when I press a key (solidfill can't handle
keystrokes) or ^C, but the second one doesn't quite do the same thing.
Ian
More information about the Urwid
mailing list