#
#		Python GUI - Events - Generic
#

class Event(object):

    """An input event.
    
    Attributes:

        kind							 Type of event. One of 'mouse_down', 'mouse_up', 'key_down',
                                             'key_up'.

        global_position		 Position of mouse in screen coordinates at the time of the event.

        position					 For mouse events, position in local coordinates of the View that
                                             was the target of this event. Undefined for other event types.

        time							 Time of event, in platform-dependent units.

        num_clicks				 Number of consecutive clicks within double-click time.

        char							 For key events, an ASCII character. Undefined for other event types.
        
        key                For non-printing keys, a value identifying the key. Undefined for other event types.

        auto               True if key-down event is an autorepeat (not supported on all platforms).

    Platform-independent modifiers (boolean):

        shift              The Shift key.
        control            The Control key.
        option             The additional modifier key.
        extend_contig      The contiguous selection extension modifier key.
        extend_noncontig   The noncontiguous selection extension modifier key.
    """
    
    def position_in(self, view):
        """Return the position of this event in the coordinate system
        of the specified view."""
        return view.global_to_local(self.global_position)	

    def __str__(self):
        return "<GUI.Event: %s global:%s local:%s time:%s clicks:%s char:%r" \
            " key:%s shift:%s control:%s option:%s extend_contig: %s" \
            " extend_noncontig:%s auto:%s%s>" \
            % (self.kind, self.global_position, self.position, self.time,
                self.num_clicks, self.char, self.key, self.shift, self.control,
                self.option, self.extend_contig, self.extend_noncontig, self.auto,
                self._platform_modifiers_str())
