B
    '˜t\>
  ã               @   s˜   d dl mZ d dlmZ d dlmZ d dlmZ ddlm	Z	 ddl
mZ d dlmZmZ d d	lmZ d
gZdZdZG dd
„ d
eƒZe e¡ dd„ ZdS )é    )Úunicode_literals)Ú
is_windows)ÚOutput)ÚSTD_OUTPUT_HANDLEé   )ÚVt100_Output)ÚWin32Output)ÚwindllÚbyref)ÚDWORDÚWindows10_Outputé   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	r   zV
    Windows 10 output abstraction. This enables and uses vt100 escape sequences.
    c             C   s,   t |ƒ| _t|dd„ ƒ| _tj t¡| _d S )Nc               S   s   d S )N© r   r   r   ú>lib/python3.7/site-packages/prompt_toolkit/output/windows10.pyÚ<lambda>   s    z+Windows10_Output.__init__.<locals>.<lambda>)	r   Úwin32_outputr   Úvt100_outputr	   Úkernel32ÚGetStdHandler   Ú	_hconsole)ÚselfÚstdoutr   r   r   Ú__init__   s    
zWindows10_Output.__init__c          
   C   sZ   t dƒ}tj | jt|ƒ¡ tj | jt ttB ƒ¡ z| j	 
¡  W dtj | j|¡ X dS )z3
        Write to output stream and flush.
        r   N)r   r	   r   ÚGetConsoleModer   r
   ÚSetConsoleModeÚENABLE_PROCESSED_INPUTÚ"ENABLE_VIRTUAL_TERMINAL_PROCESSINGr   Úflush)r   Úoriginal_moder   r   r   r      s    zWindows10_Output.flushc             C   s$   |dkrt | j|ƒS t | j|ƒS d S )N)Zget_sizeZget_rows_below_cursor_positionZenable_mouse_supportZdisable_mouse_supportZscroll_buffer_to_promptZget_win32_screen_buffer_infoZenable_bracketed_pasteZdisable_bracketed_paste)Úgetattrr   r   )r   Únamer   r   r   Ú__getattr__1   s    zWindows10_Output.__getattr__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r!   r   r   r   r   r      s   c           
   C   sd   t ƒ s
dS tj t¡} tdƒ}tj | t|ƒ¡ ztj | tt	t
B ƒ¡}|dkS tj | |¡ X dS )z_
    Returns True when we're running Windows and VT100 escape sequences are
    supported.
    Fr   r   N)r   r	   r   r   r   r   r   r
   r   r   r   )Zhconsoler   Úresultr   r   r   Úis_win_vt100_enabled>   s    
r'   N)Z
__future__r   Zprompt_toolkit.utilsr   Zprompt_toolkit.rendererr   Zprompt_toolkit.win32_typesr   Zvt100r   Zwin32r   Zctypesr	   r
   Zctypes.wintypesr   Ú__all__r   r   Úobjectr   Úregisterr'   r   r   r   r   Ú<module>   s   &
