U
    bh	                     @  sv   d Z ddlmZ ddlmZ ddlmZ dddd	gZG d
d deZG dd deZ	G dd deZ
G dd	 d	ZdS )a  
Mouse events.


How it works
------------

The renderer has a 2 dimensional grid of mouse event handlers.
(`prompt_toolkit.layout.MouseHandlers`.) When the layout is rendered, the
`Window` class will make sure that this grid will also be filled with
callbacks. For vt100 terminals, mouse events are received through stdin, just
like any other key press. There is a handler among the key bindings that
catches these events and forwards them to such a mouse event handler. It passes
through the `Window` class where the coordinates are translated from absolute
coordinates to coordinates relative to the user control, and there
`UIControl.mouse_handler` is called.
    )annotations)Enum   )PointMouseEventTypeMouseButtonMouseModifier
MouseEventc                   @  s    e Zd ZdZdZdZdZdZdS )r   MOUSE_UP
MOUSE_DOWN	SCROLL_UPSCROLL_DOWN
MOUSE_MOVEN)__name__
__module____qualname__r
   r   r   r   r    r   r   ?/tmp/pip-unpacked-wheel-9s95tbmv/prompt_toolkit/mouse_events.pyr      s
   c                   @  s    e Zd ZdZdZdZdZdZdS )r   LEFTMIDDLERIGHTNONEUNKNOWNN)r   r   r   r   r   r   r   r   r   r   r   r   r   ,   s
   c                   @  s   e Zd ZdZdZdZdS )r   SHIFTALTCONTROLN)r   r   r   r   r   r   r   r   r   r   r   :   s   c                   @  s4   e Zd ZdZdddddddd	Zd
dddZdS )r	   z
    Mouse event, sent to `UIControl.mouse_handler`.

    :param position: `Point` instance.
    :param event_type: `MouseEventType`.
    r   r   r   zfrozenset[MouseModifier]None)position
event_typebutton	modifiersreturnc                 C  s   || _ || _|| _|| _d S )Nr   r   r   r    )selfr   r   r   r    r   r   r   __init__H   s    zMouseEvent.__init__str)r!   c              	   C  s&   d| j d| jd| jd| jd	S )NzMouseEvent(,)r"   )r#   r   r   r   __repr__T   s    zMouseEvent.__repr__N)r   r   r   __doc__r$   r(   r   r   r   r   r	   @   s   N)r)   
__future__r   enumr   Zdata_structuresr   __all__r   r   r   r	   r   r   r   r   <module>   s   