o
    ˷eZ                     @   s   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
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efddZdS )    Nwin32)byrefwindll)DWORDHANDLE)AnyOptionalTextIOSize)STD_OUTPUT_HANDLE   )Output)
ColorDepth)Vt100_Output)Win32OutputWindows10_Output   c                   @   s\   e Zd ZdZ	ddedee ddfddZddd	Ze	de
fd
dZdedefddZdS )r   zV
    Windows 10 output abstraction. This enables and uses vt100 escape sequences.
    Nstdoutdefault_color_depthreturnc                 C   s8   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   V/var/www/ideatree/venv/lib/python3.10/site-packages/prompt_toolkit/output/windows10.py<lambda>$   s   
 z+Windows10_Output.__init__.<locals>.<lambda>)
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.flushc                 C   s   dS )NFr   )r   r   r   r   responds_to_cpr=   s   z Windows10_Output.responds_to_cprnamec                 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get_default_color_depth)getattrr   r   )r   r(   r   r   r   __getattr__A   s   zWindows10_Output.__getattr__)N)r   N)__name__
__module____qualname____doc__r	   r   r   r    r%   propertyboolr'   strr   r3   r   r   r   r   r      s    

	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_enabledU   s   
 r?   )r;   r<   ctypesr   r   ctypes.wintypesr   r   typingr   r   r	   prompt_toolkit.data_structuresr   prompt_toolkit.win32_typesr   baser   color_depthr   vt100r   r   r   __all__r#   r$   r   registerr9   r?   r   r   r   r   <module>   s$    
8