+++ /dev/null
-# -*- coding: utf-8 -*-
-"""
-Décorateur, métaclasse et classe mixin pour faciliter
-l'implémentation des gestionnaires d'événements pygame.
-
-Utilisation :
-- hériter de EventHandlerMixin
-- décorer les méthodes gestionnaires d'événements avec le décorateur 'event_handler'
- en passant en paramètre le code d'événement pygame
-
-Il n'existe aucune contrainte sur le nommage de la méthode décorée.
-La méthode gestionnaire d'événement reçoit l'événement pygame comme unique paramètre.
-
-par exemple :
-
-import pygame
-class Machin(pygame.sprite.Sprite, EventHandlerMixin) :
-
- # .../...
-
- @event_handler(pygame.KEYDOWN)
- def handleKeyDown(self, event) :
- pass
-
-
-$Id$
-$URL$
-"""
-import types
-
-def event_handler(eventType) :
- def doRename(m) :
- m.__name__ = 'eventHandler%s' % eventType
- return m
- return doRename
-
-
-class MetaRenamer(type):
- def __new__(mcs, name, bases, dict) :
- for k, v in dict.items() :
- if isinstance(v, types.FunctionType) :
- if k != v.__name__ :
- print 'renommage de %s en %s' % (k, v.__name__)
- dict[v.__name__] = v
- del dict[k]
- return type.__new__(mcs, name, bases, dict)
-
-
-class EventHandlerMixin(object) :
- __metaclass__ = MetaRenamer
-
- def input(self, event) :
- handler = getattr(self, 'eventHandler%s' % event.type, lambda e:None)
- handler(event)