o
    ¯ó®gi'  ã                   @   s’   	 d dl Z d dlmZmZ d dlmZ d dlmZ ddd„ZG dd„ deƒZ	d	d
„ Z
edkrGd dlmZ edddd d dlmZ ee
ƒ dS dS )é    N)Ú	StringVarÚTclError)ÚSearchDialogBase)Úsearchenginec                 C   sB   	 |   ¡ }t |¡}t|dƒst||ƒ|_|j}|j| |d d S )NÚ_replacedialog)Úinsert_tags)Ú_rootr   ÚgetÚhasattrÚReplaceDialogr   Úopen)Útextr   ÚrootÚengineZdialog© r   úE/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/idlelib/replace.pyÚreplace   s   

r   c                       s”   e Zd Z	 dZdZ‡ fdd„Zddd„Zdd	„ Zd
d„ Zddd„Z	ddd„Z
ddd„Zdd„ Zddd„Zd dd„Zdd„ Zdd„ Zddd„Z‡  ZS )!r   zReplace DialogÚReplacec                    s$   	 t ƒ  ||¡ t|ƒ| _d | _d S ©N)ÚsuperÚ__init__r   Úreplvarr   )Úselfr   r   ©Ú	__class__r   r   r   %   s   

zReplaceDialog.__init__Nc                 C   sŒ   	 t  | |¡ z| d¡}W n ty   d }Y nw z| d¡}W n ty,   d }Y nw |p3| d¡}|p7|}|  ||¡ d| _|| _d S )Nú	sel.firstúsel.lastÚinsertT)r   r   Úindexr   Úshow_hitÚokr   )r   r   r   ÚfirstÚlastr   r   r   r   6   s"   ÿÿ
zReplaceDialog.openc                 C   s$   	 t  | ¡ |  d| j¡d | _d S )NzReplace with:r   )r   Úcreate_entriesZ
make_entryr   Zreplent©r   r   r   r   r#   N   s   
zReplaceDialog.create_entriesc                 C   sL   	 t  | ¡ |  d| j¡ |  d| j¡ | jd| jdd |  d| j¡ d S )NZFindr   zReplace+FindT)ZisdefzReplace All)r   Úcreate_command_buttonsZmake_buttonÚfind_itÚ
replace_itÚdefault_commandÚreplace_allr$   r   r   r   r%   S   s   
z$ReplaceDialog.create_command_buttonsc                 C   s   	 |   d¡ d S ©NF)Údo_find©r   Úeventr   r   r   r&   _   s   zReplaceDialog.find_itc                 C   s   	 |   | j¡r|  ¡  d S d S r   ©r+   r    Ú
do_replacer,   r   r   r   r'   c   s   ÿzReplaceDialog.replace_itc                 C   s,   	 |   | j¡r|  ¡ r|   d¡ d S d S d S r*   r.   r,   r   r   r   r(   k   s   ýzReplaceDialog.default_commandc                 C   sN   	 | j  ¡ r#z| |¡}W |S  tjy"   | j  |d¡ d }Y |S w |}|S )NzInvalid Replace Expression)r   ZisreÚexpandÚreÚerrorZreport_error)r   ÚmÚreplÚnewr   r   r   Ú_replace_expandv   s   
úúzReplaceDialog._replace_expandc                 C   sž  	 | j  ¡ }|s
d S | j ¡ }| j}| j  ||¡}|s!|  ¡  d S | ddd¡ | ddd¡ |d }|d  ¡ }| j  	¡ rBd}d}d}d  }	}
| 
¡  	 | j j||||d|d	}|s\q»|\}}| d
| d
|d  ¡}| ¡ }|  ||¡}|d u r{q»| ¡ \}}d||f }	d||f }
||kr˜| d|
¡ n| d|	¡ |	|
kr¨| |	|
¡ |r²| |	|| j¡ |t|ƒ }d}qM| ¡  |	rÉ|
rÉ|  |	|
¡ |  ¡  d S )NÚselú1.0ÚendÚhitr   é   TF)Zwrapr    ú%d.0ú%d.%dr   )r   Úgetprogr   r	   r   Úsearch_textÚbellÚ
tag_removeÚstartZiswrapÚundo_block_startZsearch_forwardÚgroupr6   ÚspanÚmark_setÚdeleter   r   ÚlenÚundo_block_stopr   Úclose)r   r-   Úprogr4   r   ÚresÚlineÚcolr    r!   r"   r3   ÚcharsZorigr5   ÚiÚjr   r   r   r)   ƒ   sb   
	

ÿézReplaceDialog.replace_allFc           
      C   sx   	 | j  ¡ sdS | j}| j  |d |¡}|s|  ¡  dS |\}}| ¡ \}}d||f }d||f }	|  ||	¡ d| _dS )NFr=   T)r   r>   r   r?   r@   rE   r   r    )
r   r    r   rL   rM   r3   rP   rQ   r!   r"   r   r   r   r+   ¾   s   
zReplaceDialog.do_findc                 C   s  	 | j  ¡ }|s
dS | j}z| d¡ }}| d¡}W n ty&   d }Y nw |s2| d¡ } }}t |¡\}}| d| d|d  ¡}| ||¡}	|sOdS |  	|	| j
 ¡ ¡}
|
d u r^dS | d|¡ | ¡  |	 ¡ rr| ||¡ |
r|| ||
| j¡ | ¡  |  || d¡¡ d| _dS )NFr   r   r   r<   r;   T)r   r>   r   r   r   r   Zget_line_colr	   Úmatchr6   r   rF   rC   rD   rG   r   r   rI   r   r    )r   rK   r   r!   Úposr"   rM   rN   rO   r3   r5   r   r   r   r/   Ò   s>   
ÿzReplaceDialog.do_replacec                 C   sx   	 | j }| d|¡ | ddd¡ | d||¡ | ddd¡ ||kr*| d|¡ n| d||¡ | d¡ | ¡  d S )Nr   r7   r8   r9   r:   )r   rF   rA   Útag_addZseeZupdate_idletasks)r   r!   r"   r   r   r   r   r   ò   s   

zReplaceDialog.show_hitc                 C   s(   	 t  | |¡ | j ddd¡ d | _d S )Nr:   r8   r9   )r   rJ   r   rA   r   r,   r   r   r   rJ   	  s   
zReplaceDialog.closer   )F)Ú__name__Ú
__module__Ú__qualname__ÚtitleZiconr   r   r#   r%   r&   r'   r(   r6   r)   r+   r/   r   rJ   Ú__classcell__r   r   r   r   r      s"    





; r   c                    sî   ddl m}m}m‰ m‰ ddlm}m} || ƒ}| d¡ t	t
|  ¡  d¡dd … ƒ\}}| d||d f ¡ d	d
„ }dd„ }	||ƒ}
|
 ¡  ||
dd‰|ˆ_|	ˆ_ˆ ¡  ˆ dd¡ ˆ ¡  ‡ ‡‡fdd„}||
d|d}| ¡  d S )Nr   )ÚToplevelÚTextÚENDÚSEL)ÚFrameÚButtonzTest ReplaceDialogú+r;   z+%d+%dé¯   c                   S   ó   d S r   r   r   r   r   r   rC     ó   z)_replace_dialog.<locals>.undo_block_startc                   S   rb   r   r   r   r   r   r   rI     rc   z(_replace_dialog.<locals>.undo_block_stopZgray)Zinactiveselectbackgroundr   z"This is a sample sTring
Plus MORE.c                      s(   ˆ  ˆdˆ ¡ tˆƒ ˆ ˆdˆ ¡ d S )Nr8   )rT   r   rA   r   ©r\   r]   r   r   r   Úshow_replace)  s   z%_replace_dialog.<locals>.show_replacer   )r   Zcommand)ÚtkinterrZ   r[   r\   r]   Ztkinter.ttkr^   r_   rX   ÚmapÚintZgeometryÚsplitÚpackrC   rI   r   Z	focus_set)ÚparentrZ   r[   r^   r_   ÚtopÚxÚyrC   rI   Úframere   Zbuttonr   rd   r   Ú_replace_dialog  s&   
 rp   Ú__main__)Úmainzidlelib.idle_test.test_replaceé   F)Ú	verbosityÚexit)Úrunr   )r1   rf   r   r   Zidlelib.searchbaser   Zidlelibr   r   r   rp   rU   Zunittestrr   Zidlelib.idle_test.htestrv   r   r   r   r   Ú<module>   s    
 r!û