The event-handling code can be refactored and improved. One way of improving this is to move some of our object to inherti gobject.GObject and use gobject's signal/event handling capabilities. This may not be to replace all of our event handling code but it's a good start.
11 Jul '07 - Currently in Straw Git repository. There are still traces of Event.py which I will be cleaning up soon.
Quick summary of PyDispatcher:
PyDispatcher provides the Python programmer with a multiple-producer-multiple-consumer signal-registration and routing infrastructure for use in multiple contexts.
Maybe we should take a look at it? I use it in other open-source project and so far it works just fine. It also has clean and simple API (send/connect + extended versions of these two). I don't know how/if it affects performance compared to gobject when sending large number of messages, but I'm not sure if that's an issue in Straw.
Anyway, I strongly recommend considering this option as it could provide nice infrastructure for messaging.
See http://pydispatcher.sourceforge.net/ for details.