
    AHj                        d dl mZ d dlZd dl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 erd dlmZ  G d	 d
e      Zy)    )annotationsN)EventThread)TYPE_CHECKINGCallable)Driver)win32)WriterThread)Appc                       e Zd ZdZdddd	 	 	 	 	 	 	 	 	 d fdZedd       ZddZdd	Zdd
Z	ddZ
ddZddZddZddZddZ xZS )WindowsDriverz%Powers display and input for Windows.FTNdebugmousesizec                   t         |   ||||       t        j                  | _        t               | _        d| _        d| _        d| _	        y)zInitialize Windows driver.

        Args:
            app: The App instance.
            debug: Enable debug mode.
            mouse: Enable mouse support.
            size: Initial size of the terminal or `None` to detect.
        r   N)
super__init__sys
__stdout___filer   
exit_event_event_thread_restore_console_writer_thread)selfappr   r   r   	__class__s        V/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/drivers/windows_driver.pyr   zWindowsDriver.__init__   sG      	ETB^^
',0;?37    c                     y)zCan this driver be suspended?T r   s    r   can_suspendzWindowsDriver.can_suspend*   s     r    c                `    | j                   J d       | j                   j                  |       y)zTWrite data to the output device.

        Args:
            data: Raw data.
        Nz"Driver must be in application mode)r   write)r   datas     r   r&   zWindowsDriver.write/   s0     "".T0TT.!!$'r    c                    | j                   sy| j                  } |d        |d        |d        |d       | j                          y)z!Enable reporting of mouse events.Nz[?1000h[?1003hz[?1015hz[?1006h_mouser&   flushr   r&   s     r   _enable_mouse_supportz#WindowsDriver._enable_mouse_support8   >    {{

mmmm

r    c                    | j                   sy| j                  } |d        |d        |d        |d       | j                          y)z"Disable reporting of mouse events.Nz[?1000lz[?1003lz[?1015lz[?1006lr*   r-   s     r   _disable_mouse_supportz$WindowsDriver._disable_mouse_supportC   r/   r    c                &    | j                  d       y)zEnable bracketed paste mode.z[?2004hNr&   r#   s    r   _enable_bracketed_pastez%WindowsDriver._enable_bracketed_pasteN       

=!r    c                &    | j                  d       y)zDisable bracketed paste mode.z[?2004lNr3   r#   s    r   _disable_bracketed_pastez&WindowsDriver._disable_bracketed_pasteR   r5   r    c                X   t        j                         }t        j                         | _        t        | j                        | _        | j                  j                          | j                  d       | j                          | j                  d       | j                  d       | j                  d       | j                          | j                          t        j                  || j                  | j                  | j                         | _        | j"                  j                          y)zStart application mode.z[?1049hz[?25lr)   z[?1004hN)asyncioget_running_loopr	   enable_application_moder   r
   r   r   startr&   r.   r,   r4   EventMonitor_appr   process_messager   )r   loops     r   start_application_modez$WindowsDriver.start_application_modeV   s    '') % = = ?*4::6!!#

=!""$

;

=!

=!

$$&"//$))T__d.B.B
 	  "r    c                J   	 | j                   j                         sr| j                          | j                   j                          | j                  !| j                  j                          d| _        | j                   j                          yy# t        $ r
}Y d}~yd}~ww xY w)zDisable further input.N)r   is_setr1   setr   joinclear	Exception)r   errors     r   disable_inputzWindowsDriver.disable_inputl   s    
	??))+++-##%%%1&&++-)-D&%%' ,  		s   BB 	B"B"c                    | j                          | j                          | j                  d       | j                  d       | j                          y)z%Stop application mode, restore state.z[?1049l[?25hz[?1004lN)r7   rI   r&   r,   r#   s    r   stop_application_modez#WindowsDriver.stop_application_modez   s>    %%' 	

./

=!

r    c                    | j                   | j                   j                          | j                  r| j                          yy)zPerform cleanup.N)r   stopr   r#   s    r   closezWindowsDriver.close   s:    *$$&  !!# !r    )
r   r   r   boolr   rO   r   ztuple[int, int] | NonereturnNone)rP   rO   )r'   strrP   rQ   )rP   rQ   )__name__
__module____qualname____doc__r   propertyr$   r&   r.   r1   r4   r7   rA   rI   rK   rN   __classcell__)r   s   @r   r   r      s    / '+88 	8
 8 %8 
8.  (		""#,$r    r   )
__future__r   r9   r   	threadingr   r   typingr   r   textual.driverr   textual.driversr	   textual.drivers._writer_threadr
   textual.appr   r   r"   r    r   <module>r`      s1    "  
 # * ! ! 7y$F y$r    