About Louie and lib.pubsub
Bill Baxter
wbaxter at gmail.com
Thu Jun 21 19:59:56 PDT 2007
I posted something about this to the Louie mailing list, but since there
have been all of 5 messages there since last year, I didn't really expect a
reply, and indeed didn't get one.
So at the risk of being off-topic I'm repeating myself here since this is
the place I heard about Louie.
Here's my quick comparison of how Louie measures up to wx.lib.pubsub:
- on the plus side you can hook up arbitrary methods as callbacks, unlike
wx.lib.pubsub where your callback always has to take a single Message
parameter. With Louie, if you have a method sitting around that takes a
'value' parameter, you can hook up some notification to it directly rather
than having to write an adapter that takes a Message, extracts the
msg.data.value and then calls the function you really wanted to call. I'm
sure there's a cost you have to pay for this though. You can also just use
positional arguments. So with louie you can do:
louie.send('value_changed", sender, new_value)
and it can directly call a callback method like
def setDisplay(self, display):
self.text =3D str(display)
whereas with pubsub you'd have to make another method to call the setDisplay
one, something like:
def onValueChanged(self, message):
self.setDisplay(message.data['new_value'])
It's just an extra two-liner, but still it's kind of an annoyance for
someone used to Qt's way where signals can usually be hooked up to existing
slots that are just setters. Maybe you can lambda it down to a one-liner,
but it's still a little extra work.
- on the minus side Louie uses a single global dispatcher. In that respect
wx.lib.pubsub is nicer, since you can create multiple dispatchers/Publishers
with pubsub. This was a deal-breaker for me. If you have a app that
creates two main document frames, it makes no sense for there to be a single
dispatcher that processes all the signals in both frames. The dispatcher
for events related to one document should really belong to that document,
and not be global. Having said that, it doesn't look like it would be
terribly hard to fix Louie to make the dispatcher a class.
- also on the minus side, like I said, I posted a message to the Louie
mailing list and got no response. Seems like the project is pretty dead at
this time.
--bb
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.wxwidgets.org/pipermail/wxpython-dev/attachments/20070622=
/139d929c/attachment.htm
More information about the wxpython-dev
mailing list