コード例 #1
0
ファイル: event_dispatcher.py プロジェクト: onema/evee
    def remove_subscriber(self, subscriber: AbstractEventSubscriber):
        """
        Removes an event subscriber.

        :param subscriber: The subscriber
        :return:
        """
        for event_name, params in subscriber.get_subscribed_events().items():
            if isinstance(params, list) and isinstance(params[0], list):
                for listener in params:
                    self.remove_listener(event_name, getattr(subscriber, listener[0]))
            else:
                parameters = params if isinstance(params, str) else params[0]
                self.remove_listener(event_name, getattr(subscriber, parameters))
コード例 #2
0
ファイル: event_dispatcher.py プロジェクト: onema/evee
    def add_subscriber(self, subscriber: AbstractEventSubscriber):
        """
        Adds an event subscriber. The subscriber is asked for all the events he is
        interested in and added as a listener for these events.

        :param subscriber:  The subscriber
        """
        for event_name, params in subscriber.get_subscribed_events().items():
            if isinstance(params, str):
                self.add_listener(event_name, getattr(subscriber, params))
            elif isinstance(params, list) and len(params) <= 2 and isinstance(params[0], str):
                priority = params[1] if len(params) > 1 else 0
                self.add_listener(event_name, getattr(subscriber, params[0]), priority)
            else:
                for listener in params:
                    priority = listener[1] if len(listener) > 1 else 0
                    self.add_listener(event_name, getattr(subscriber, listener[0]), priority)