o
    tVg                     @   s   d Z ddlZddlZddlmZ ddlZddlZddlmZ dej	d< G dd dZ
G dd	 d	Zd
d Zedkr>e  dS dS )z pg.examples.textinput

A little "console" where you can write in text.

Shows how to use the TEXTEDITING and TEXTINPUT events.
    N)List1SDL_IME_SHOW_UIc                   @   s\   e Zd ZdZddd dD Z	ddeded	d
fddZdddZ	de
jd	d
fddZd
S )	TextInputzO
    A simple TextInput class that allows you to receive inputs in pygame.
    ,c                 c   s    | ]}t |V  qd S )N)str).0x r
   M/home/ubuntu/.local/lib/python3.10/site-packages/pygame/examples/textinput.py	<genexpr>   s
    
zTextInput.<genexpr>)notosanscjktcregularnotosansmonocjktcregularznotosansregular,)microsoftjhengheimicrosoftjhengheiuilight#microsoftyaheimicrosoftyaheiuilightmsgothicmsuigothicmspgothicmsminchoArialwhitepromptprint_eventreturnNc                 C   s   || _ || _t|d |d d f|d df| _t||d df| _d| _d| _d| _d| _	d| _
d| _g | _t| jd	| _t| jd
| _|| _td| jj  d S )Nr      2   i  (      F       zUsing font: )r   r   pgRectCHAT_LIST_POSCHAT_BOX_POSCHAT_LIST_MAXSIZE_ime_editing	_ime_text_ime_text_pos_ime_editing_text_ime_editing_pos	chat_listfreetypeSysFont
FONT_NAMESfont
font_small
text_colorprintname)selfr   posscreen_dimensionsr   r/   r
   r
   r   __init__*   s   &zTextInput.__init__c                 C   s  |D ]}|j tjkr| jrt| | jr t| jdkrd| _q|jtj	krOt| j
dkrN| jdkrN| j
d| jd  | j
| jd  | _
td| jd | _q|jtjkri| j
d| j | j
| jd d  | _
q|jtjkrytd| jd | _q|jtjkrtt| j
| jd | _q|jtjtjfv rt| j
dkrq| j| j
 t| j| jkr| jd d| _
d| _q|j tjkr| jrt| d| _|j| _|j| _q|j tjkr| jrt| d| _d| _| j
d| j |j | j
| jd  | _
|  jt|j7  _qdS )z/
        Updates the text input widget
        r   Fr   Nr   T)typer   KEYDOWNr   r0   r$   lenr'   keyK_BACKSPACEr%   r&   maxK_DELETEK_LEFTK_RIGHTminK_RETURN
K_KP_ENTERr)   appendr#   popTEXTEDITINGtextstartr(   	TEXTINPUT)r2   eventseventr
   r
   r   updateD   sp   

zTextInput.updatescreenc                 C   s  | j j| j }t| jD ]\}}| j|| j j| j j||  f|| j	 q| j
 }| j| jd| j  }| jd| j d | j| jd  }| j| jd }| j|||| j	}	| j|	j7  _| j|||| j	dtj}
| j|
j7  _| j|||| j	 dS )zG
        Draws the text input widget onto the provided surface
        r   |N)r!   heightr#   	enumerater)   r.   	render_tor	   yr/   r"   copyr   r%   r&   r'   r(   r-   widthr*   STYLE_UNDERLINE)r2   rK   chat_heightichat	start_pos
ime_text_l
ime_text_m
ime_text_rrect_text_lrect_text_mr
   r
   r   draw   s>   

zTextInput.draw)r   r   N)__name__
__module____qualname____doc__joinr,   r   boolr5   rJ   pygameSurfacer]   r
   r
   r
   r   r      s    


Ar   c                   @   s<   e Zd ZdZdZd\ZZdZdeddfdd	Z	dd
dZ
dS )Gamez?
    A class that handles the game's events, mainloop etc.
    r   )i  i  blackcaptionr   Nc                 C   sd   t   t j| j| jf| _t j| t j	 | _
dtjv | _tdd| j| jf| jdd| _d S )N	showeventz> )r   r   green)r   r3   r4   r   r/   )r   initdisplayset_modeSCREEN_WIDTHSCREEN_HEIGHTrK   set_captiontimeClockclocksysargvr   r   
text_input)r2   ri   r
   r
   r   r5      s   
zGame.__init__c                 C   s   t j  t dddd}t j| 	 t j }|D ]}|jt jkr*t 	   d S q| j
| | j| j | j
| j t j  | j| j q)NP   i@  r   )r   r9   start_text_inputr    set_text_input_rectrI   getr6   QUITquitrw   rJ   rK   fillBG_COLORr]   rm   rt   tickFPS)r2   
input_rectrH   rI   r
   r
   r   	main_loop   s    


zGame.main_loopr^   )r_   r`   ra   rb   r   ro   rp   r   r   r5   r   r
   r
   r
   r   rg      s    rg   c                  C   s   t d} |   d S )NzText Input Example)rg   r   )gamer
   r
   r   main   s   r   __main__)rb   ru   ostypingr   re   r   pygame.freetyper*   environr   rg   r   r_   r
   r
   r
   r   <module>   s   
 5
