Cool, Thanks for your explanation Alex.
On Feb 21, 10:03 pm, "Alex Holkner" <[EMAIL PROTECTED]> wrote: > On 2/21/08, jotham <[EMAIL PROTECTED]> wrote: > > > > > Hey guys. > > > I was just wondering what the logic was behind the way the event > > dispatcher currently works. > > > In the code below I have to name the string value of my test event > > something different from the name of the variable. This appears to be > > because as you register_event_type the EventDispatcher adds a new > > attribute to the class in question with the same name as the event > > string name. > > It doesn't; the event names are kept in a separate list. > > > Right now the error you get is very ambiguous if you accidentally name > > your event the same as an attribute the class already has. Maybe that > > could be modified or checked for or noted in the documentation? (If it > > already is I apologise, I did not see it). > > The EventDispatcher considers a method on itself named after the event > to be a handler for that event. This useful to provide default > handlers, and also to allow easy adding of event handlers to a > subclass. For example, you can subclass Window and write an > on_resize(self, width, height) method; this will override the default > handler. > > EventDispatcher doesn't distinguish between methods and attributes > with the event name. I suppose it could; but that would just > complicate an already confusing situation, I suspect (your TEST_EVENT > attribute would get lost when someone tries to handle that event in a > subclass). > > > class Test (event.EventDispatcher): > > TEST_EVENT = 'TEST_EVENT_' > > Incidentally, this was an old pattern used in earlier pre-alpha > versions of pyglet. We ended up throwing it out because a string > constant (like 'on_resize') is just as easy to write/remember as a > named constant (like "ON_RESIZE") but cuts down on repetition and > errors. > > Alex. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "pyglet-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/pyglet-users?hl=en -~----------~----~----~----~------~----~------~--~---
