o
    OZh                     @   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1Z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	   H/var/www/auris/lib/python3.10/site-packages/pygame/examples/textinput.py	<genexpr>   s
    
zTextInput.<genexpr>)ZnotosanscjktcregularZnotosansmonocjktcregularznotosansregular,Z)microsoftjhengheimicrosoftjhengheiuilightZ#microsoftyaheimicrosoftyaheiuilightZmsgothicmsuigothicmspgothicZmsminchoZ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freetypeZ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   ZKEYDOWNr   r'   r   lenr   keyZK_BACKSPACEr   r   maxZK_DELETEZK_LEFTZK_RIGHTminZK_RETURNZ
K_KP_ENTERr!   appendr   popZTEXTEDITINGtextstartr    Z	TEXTINPUT)r)   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%   Z	render_tor   yr&   r   copyr   r   r   r   r    r$   widthr"   ZSTYLE_UNDERLINE)r)   r9   Zchat_heightiZchat	start_posZ
ime_text_lZ
ime_text_mZ
ime_text_rZrect_text_lZrect_text_mr	   r	   r
   draw   s>   

zTextInput.draw)r   r   N)__name__
__module____qualname____doc__joinr#   r   boolr,   r8   pygameZSurfacerB   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 )NZ	showeventz> )r   r   green)r   r*   r+   r   r&   )r   initdisplayset_modeSCREEN_WIDTHSCREEN_HEIGHTr9   Zset_captiontimeZClockclocksysargvr   r   
text_input)r)   rM   r	   r	   r
   r,      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   r/   Zstart_text_inputr   Zset_text_input_rectr7   getr-   ZQUITquitrX   r8   r9   fillBG_COLORrB   rP   rU   ZtickFPS)r)   Z
input_rectr6   r7   r	   r	   r
   	main_loop   s    


zGame.main_looprC   )rD   rE   rF   rG   r^   rR   rS   r]   r   r,   r_   r	   r	   r	   r
   rK      s    rK   c                  C   s   t d} |   d S )NzText Input Example)rK   r_   )Zgamer	   r	   r
   main   s   r`   __main__)rG   rV   ostypingr   rJ   r   Zpygame.freetyper"   environr   rK   r`   rD   r	   r	   r	   r
   <module>   s   
 5
