o
    Df                     @  s   d dl mZ d dlZejdksJ d dlmZmZ d dlmZm	Z	 d dl
mZ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 dgZd	ZdZG dd dZee dddZdS )    )annotationsNwin32)byrefwindll)DWORDHANDLE)AnyTextIOSize)STD_OUTPUT_HANDLE   )Output)
ColorDepth)Vt100_Output)Win32OutputWindows10_Output   c                   @  sJ   e Zd ZdZ	ddd	d
ZdddZedddZdddZdddZ	dS )r   zV
    Windows 10 output abstraction. This enables and uses vt100 escape sequences.
    Nstdoutr	   default_color_depthColorDepth | NonereturnNonec                 C  s>   || _ t||d| _t|dd |d| _ttjt	| _
d S )N)r   c                   S  s
   t ddS )Nr   r
    r   r   X/home/ubuntu/webapp/venv/lib/python3.10/site-packages/prompt_toolkit/output/windows10.py<lambda>'   s   
 z+Windows10_Output.__init__.<locals>.<lambda>)r   r   win32_outputr   vt100_outputr   r   kernel32GetStdHandler   	_hconsole)selfr   r   r   r   r   __init__!   s   
zWindows10_Output.__init__c              
   C  sh   t d}tj| jt| tj| jt ttB  z| j	
  W tj| j| dS tj| j| w )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.flushboolc                 C  s   dS )NFr   r!   r   r   r   responds_to_cpr@   s   z Windows10_Output.responds_to_cprnamestrr   c                 C  s    |dv r
t | j|S t | j|S )N)get_sizeget_rows_below_cursor_positionenable_mouse_supportdisable_mouse_supportscroll_buffer_to_promptget_win32_screen_buffer_infoenable_bracketed_pastedisable_bracketed_paste)getattrr   r   )r!   r,   r   r   r   __getattr__D   s   
zWindows10_Output.__getattr__r   c                 C  s   | j dur| j S tjS )z
        Return the default color depth for a windows terminal.

        Contrary to the Vt100 implementation, this doesn't depend on a $TERM
        variable.
        N)r   r   
TRUE_COLORr*   r   r   r   get_default_color_depthS   s   
	z(Windows10_Output.get_default_color_depth)N)r   r	   r   r   r   r   )r   r   r   r)   )r,   r-   r   r   )r   r   )
__name__
__module____qualname____doc__r"   r'   propertyr+   r7   r9   r   r   r   r   r      s    


r   r)   c               
   C  sx   t jdkrdS ttjt} td}tj| t	| ztj
| tttB }|dkW tj
| | S tj
| | w )z_
    Returns True when we're running Windows and VT100 escape sequences are
    supported.
    r   Fr   r   )sysplatformr   r   r   r   r   r   r#   r   r$   r%   r&   )hconsoler(   resultr   r   r   is_win_vt100_enabledj   s   
 rD   r:   )
__future__r   r@   rA   ctypesr   r   ctypes.wintypesr   r   typingr   r	   prompt_toolkit.data_structuresr   prompt_toolkit.win32_typesr   baser   color_depthr   vt100r   r   r   __all__r%   r&   r   registerrD   r   r   r   r   <module>   s&    
K