
    AHj`                    R    d dl mZ d dlZd dlmZ d dlmZ d dlmZ  G d de      Z	y)    )annotationsN)events)Driver)Sizec                  J    e Zd ZdZed	d       Zd
dZddZddZddZ	ddZ
y)HeadlessDriverz A do-nothing driver for testing.c                     y)z)Is the driver running in 'headless' mode?T selfs    W/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/drivers/headless_driver.pyis_headlesszHeadlessDriver.is_headless   s         c                   | j                   | j                   S d}d}dd l}	 |j                         \  }}|xs d}|xs d}||fS # t        t        t
        f$ r2 	 |j                         \  }}n# t        t        t
        f$ r Y nw xY wY Uw xY w)NP      r   )_sizeshutilget_terminal_sizeAttributeError
ValueErrorOSError)r   widthheightr   s       r   _get_terminal_sizez!HeadlessDriver._get_terminal_size   s    ::!::	"446ME6 2f} 
G4 	 & 8 8 :v"J8 	s5   A BA.-B.BBBB
Bc                     y)zTWrite data to the output device.

        Args:
            data: Raw data.
        Nr
   )r   datas     r   writezHeadlessDriver.write$       r   c                L     t        j                         d fd} |        y)zStart application mode.c                     j                         } | \  }}t        ||      }t        j                  ||      }t	        j
                  j                  j                  |             y)zSend first resize event.)loopN)r   r   r   Resizeasynciorun_coroutine_threadsafe_app_post_message)terminal_sizer   r   textual_sizeeventr"   r   s        r   send_size_eventz>HeadlessDriver.start_application_mode.<locals>.send_size_event0   sY     335M)ME6v.LMM,=E,,		''.r   NreturnNone)r$   get_running_loop)r   r+   r"   s   ` @r   start_application_modez%HeadlessDriver.start_application_mode,   s    '')		 	r   c                     y)zDisable further input.Nr
   r   s    r   disable_inputzHeadlessDriver.disable_input=   r   r   c                     y)z%Stop application mode, restore state.Nr
   r   s    r   stop_application_modez$HeadlessDriver.stop_application_mode@   r   r   N)r-   bool)r-   ztuple[int, int])r   strr-   r.   r,   )__name__
__module____qualname____doc__propertyr   r   r   r0   r2   r4   r
   r   r   r   r   
   s0    * $"%4r   r   )

__future__r   r$   textualr   textual.driverr   textual.geometryr   r   r
   r   r   <module>r@      s     "   ! !74V 74r   