
    Dh                    f   d Z ddlmZ ddlZddlZddlmZmZ	m
ZmZmZmZmZmZ ej,                  j.                  Z ed      Z ed      Z G d dej6                        Zej:                  Zee_        ej@                  Z!ee!_        ejD                  Z#ee#_        ejH                  Z%ee%_         e#e      Z& e       Z' e ee&       ejP                  e'              e#e      Z) e       Z* e ee)       ejP                  e*              G d	 d
ejV                        Z, G d dejV                        Z- G d dejV                        Z. G d dejV                        Z/ G d dejV                        Z0 G d dejV                        Z1 G d dejV                        Z2ddZ3ddZ4ddZ5ddZ6ddZ7d Z8y) z
Windows specific code for the terminal.

Note that the naming convention here is non-pythonic because we are
matching the Windows API naming.
    )annotationsN)BOOLCHARDWORDHANDLESHORTUINTWCHARWORDiic                  L    e Zd ZdZdZdZdZdZdZdZ	dZ
d	ZdZdZdZdZdZdd
Zy)WindowsConsoleModeFlags                   @      i   c                <    | j                    d| j                  ddS )Nz (0x04X))namevalue)selfs    /var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/progressbar/terminal/os_specific/windows.py__str__zWindowsConsoleModeFlags.__str__/   s     ))DC 022    N)returnstr)__name__
__module____qualname__ENABLE_ECHO_INPUTENABLE_EXTENDED_FLAGSENABLE_INSERT_MODEENABLE_LINE_INPUTENABLE_MOUSE_INPUTENABLE_PROCESSED_INPUTENABLE_QUICK_EDIT_MODEENABLE_WINDOW_INPUTENABLE_VIRTUAL_TERMINAL_INPUTENABLE_PROCESSED_OUTPUTENABLE_WRAP_AT_EOL_OUTPUT"ENABLE_VIRTUAL_TERMINAL_PROCESSINGDISABLE_NEWLINE_AUTO_RETURNENABLE_LVB_GRID_WORLDWIDEr    r   r   r   r      s[    "## $*!$ &)/&"( &3r   r   c                      e Zd ZdefdeffZy)_COORDXYN)r!   r"   r#   _SHORT_fields_r2   r   r   r4   r4   H   s    fV}-Hr   r4   c                      e Zd ZdeffZy)_FOCUS_EVENT_RECORD	bSetFocusN)r!   r"   r#   _BOOLr8   r2   r   r   r:   r:   L   s    e$&Hr   r:   c                  ^    e Zd Z G d dej                        ZdefdefdefdefdefdeffZ	y	)
_KEY_EVENT_RECORDc                      e Zd ZdefdeffZy)_KEY_EVENT_RECORD._ucharUnicodeChar	AsciiCharN)r!   r"   r#   _WCHAR_CHARr8   r2   r   r   _ucharr@   Q   s    "F+k5-ABr   rE   bKeyDownwRepeatCountwVirtualKeyCodewVirtualScanCodeuChardwControlKeyStateN)
r!   r"   r#   ctypesUnionrE   r<   _WORD_DWORDr8   r2   r   r   r>   r>   P   sM    C C 
U		E"	U#	&	f%Hr   r>   c                      e Zd ZdeffZy)_MENU_EVENT_RECORDdwCommandIdN)r!   r"   r#   _UINTr8   r2   r   r   rQ   rQ   ^   s    &(Hr   rQ   c                  (    e Zd ZdefdefdefdeffZy)_MOUSE_EVENT_RECORDdwMousePositiondwButtonStaterK   dwEventFlagsN)r!   r"   r#   r4   rO   r8   r2   r   r   rU   rU   b   s)    	F#	&!	f%	 	Hr   rU   c                      e Zd ZdeffZy)_WINDOW_BUFFER_SIZE_RECORDdwSizeN)r!   r"   r#   r4   r8   r2   r   r   rZ   rZ   k   s    6"$Hr   rZ   c                  F    e Zd Z G d dej                        ZdefdeffZy)_INPUT_RECORDc                  .    e Zd ZdefdefdefdefdeffZy)_INPUT_RECORD._EventKeyEvent
MouseEventWindowBufferSizeEvent	MenuEvent
FocusEventN)	r!   r"   r#   r>   rU   rZ   rQ   r:   r8   r2   r   r   _Eventr_   p   s6    *+./$&@A,-./
r   re   	EventTypeEventN)r!   r"   r#   rL   rM   re   rN   r8   r2   r   r   r]   r]   o   s(    
 
 e$w&78Hr   r]   c                     t        t        t              t        t        j
                               t        t        t              t        t        j
                               y N)_SetConsoleMode_HANDLE_h_console_inputrO   _input_moder   _h_console_output_output_moder2   r   r   reset_console_moderp   |   s8    G,-vk6G6G/HIG-.|7I7I0JKr   c                 B   t         j                  t        j                  z  } t	        t        t              t        |              t        j                  t        j                  z  t        j                  z  } t        t	        t        t              t        |                   S ri   )rm   r   r   r,   rj   rk   rl   rO   ro   r-   r/   boolrn   )modes    r   set_console_modert      s    
!
?
?	@ 	 G,-vd|< 	
!
9
9	:
!
D
D	E 	
 (9 :F4LIJJr   c                 "    t         j                  S ri   )rm   r   r2   r   r   get_console_moderv      s    r   c                8    t         j                  t        |        y ri   )	_kernel32SetConsoleTextAttributern   )colors    r   set_text_colorr{      s    %%&7?r   c                F    t        |       t        |        t        d       y )N   )r{   print)textrz   s     r   print_colorr      s    5	$K1r   c                 *   t        dz         } t        d      }t               }t        t        t              | |t        j                  |             | d   j                  j                  j                  j                  j                  d      }|dk(  ry |S )Nr   r   ascii )r]   rO   _ReadConsoleInputrk   rl   rL   byrefrg   r`   rJ   rB   decode)	lp_buffern_lengthlp_number_of_events_readchars       r   getchr      s    "%IayH%x !-.	 Q<&&,,66==gFDv~Kr   )r   None)r   rr   )r   int)9__doc__
__future__r   rL   enumctypes.wintypesr   r<   r   rD   r   rO   r   rk   r   r7   r	   rS   r
   rC   r   rN   windllKernel32rx   _STD_INPUT_HANDLE_STD_OUTPUT_HANDLEIntFlagr   GetConsoleMode_GetConsoleModerestypeSetConsoleModerj   GetStdHandle_GetStdHandleReadConsoleInputAr   rl   rm   r   rn   ro   	Structurer4   r:   r>   rQ   rU   rZ   r]   rp   rt   rv   r{   r   r   r2   r   r   <module>r      s   #  	 	 	 MM""	3K C[ 3dll 3* ** ** && // !   !23 h ()<6<<+D E!"45 x )*LFLL,F G.V .'&** '(( ))) )&** %!1!1 %
9F$$ 
9L
K@r   