
    ;e'                         	 d dl Z d dlmZmZ d dlmZ d dlmZ ddZ G d de          Z	d Z
ed	k    r'd d
lmZ  eddd           d dlmZ  ee
           dS dS )    N)	StringVarTclError)SearchDialogBase)searchenginec                     	 |                                  }t          j        |          }t          |d          st	          ||          |_        |j        }|                    | |           d S )N_replacedialog)insert_tags)_rootr   gethasattrReplaceDialogr   open)textr	   rootenginedialogs        &/usr/lib/python3.11/idlelib/replace.pyreplacer      so     ::<<Dd##F6+,, < -dF ; ;"F
KK+K.....    c                   ~     e Zd Z	 dZdZ fdZddZd Zd ZddZ	dd	Z
dd
Zd ZddZddZd Zd ZddZ xZS )r   zReplace DialogReplacec                     	 t                                          ||           t          |          | _        d | _        d S N)super__init__r   replvarr	   )selfr   r   	__class__s      r   r   zReplaceDialog.__init__%   s?    	 	v&&& r   Nc                 T   	 t          j        | |           	 |                    d          }n# t          $ r d }Y nw xY w	 |                    d          }n# t          $ r d }Y nw xY w|p|                    d          }|p|}|                     ||           d| _        || _        d S )N	sel.firstsel.lastinsertT)r   r   indexr   show_hitokr	   )r   r   r	   firstlasts        r   r   zReplaceDialog.open6   s    	 	dD)))	JJ{++EE 	 	 	EEE		::j))DD 	 	 	DDD	-H--}ueT"""&s   . ==A A&%A&c                 |    	 t          j        |            |                     d| j                  d         | _        d S )NzReplace with:r   )r   create_entries
make_entryr   replentr   s    r   r)   zReplaceDialog.create_entriesN   s6    B'---EEaHr   c                    	 t          j        |            |                     d| j                   |                     d| j                   |                     d| j        d           |                     d| j                   d S )NFindr   zReplace+FindT)isdefzReplace All)r   create_command_buttonsmake_buttonfind_it
replace_itdefault_commandreplace_allr,   s    r   r0   z$ReplaceDialog.create_command_buttonsS   s    	
 	/555...DO444)=TJJJ(899999r   c                 2    	 |                      d           d S NF)do_findr   events     r   r2   zReplaceDialog.find_it_   s    !Ur   c                 h    	 |                      | j                  r|                                  d S d S r   r8   r%   
do_replacer9   s     r   r3   zReplaceDialog.replace_itc   s?    	 <<   	OO	 	r   c                     	 |                      | j                  r+|                                 r|                      d           d S d S d S r7   r<   r9   s     r   r4   zReplaceDialog.default_commandk   s]    	
 <<   	$   $U#####	$ 	$$ $r   c                     	 | j                                         rI	 |                    |          }n4# t          j        $ r  | j                             |d           d }Y nw xY w|}|S )NzInvalid Replace Expression)r   isreexpandreerrorreport_error)r   mreplnews       r   _replace_expandzReplaceDialog._replace_expandv   s|    8; 	hhtnn8   ((/KLLL C
s   2 ,A! A!c                    	 | j                                         }|sd S | j                                        }| j        }| j                             ||          }|s|                                  d S |                    ddd           |                    ddd           |d         }|d                                         }| j         	                                rd}d}d}d x}	}
|
                                 | j                             ||||d|	          x}r|\  }}|                    d
|z  d
|dz   z            }|                                }|                     ||          }|n|                                \  }}d||fz  }	d||fz  }
||k    r|                    d|
           nP|                    d|	           |	|
k    r|                    |	|
           |r|                    |	|| j                   |t'          |          z   }d}| j                             ||||d|	          x}|                                 |	r|
r|                     |	|
           |                                  d S )Nsel1.0endhitr      TF)wrapr%   %d.0%d.%dr"   )r   getprogr   r   r   search_textbell
tag_removestartiswrapundo_block_startsearch_forwardgrouprH   spanmark_setdeleter"   r	   lenundo_block_stopr$   close)r   r:   progrF   r   reslinecolr%   r&   r'   rE   charsorigrG   ijs                    r   r5   zReplaceDialog.replace_all   s   	 {""$$ 	F|!!yk%%dD11 	IIKKKFue,,,ue,,,1v!fllnn; 	DC[//dD#Eb 0 : : :c 	GD!HHVd]Fd1f,=>>E7799D&&q$//C{6688DAqtQi'EdAY&Dd{{h----h...D==KKt,,, >KKsD,<===c#hh,CB) [//dD#Eb 0 : : :c 	* 	 	'T 	'MM%&&&

r   Fc                 B   	 | j                                         sdS | j        }| j                             |d |          }|s|                                  dS |\  }}|                                \  }}d||fz  }d||fz  }	|                     ||	           d| _        dS )NFrQ   T)r   rR   r   rS   rT   r[   r$   r%   )
r   r%   r   rb   rc   rE   rg   rh   r&   r'   s
             r   r8   zReplaceDialog.do_find   s    	 {""$$ 	5yk%%dD"55 	IIKKK5avvxx14)#$"eT"""tr   c                 t   	 | j                                         }|sdS | j        }	 |                    d          x}}|                    d          }n# t          $ r d }Y nw xY w|s|                    d          x}x}}t          j        |          \  }}|                    d|z  d|dz   z            }|                    ||          }	|sdS | 	                    |	| j
                                                  }
|
dS |                    d|           |                                 |	                                r|                    ||           |
r|                    ||
| j                   |                                 |                     ||                    d                     d| _        dS )NFr    r!   r"   rP   rN   T)r   rR   r   r#   r   r   get_line_colr   matchrH   r   r\   rX   rZ   r]   r"   r	   r_   r$   r%   )r   ra   r   r&   posr'   rc   rd   re   rE   rG   s              r   r=   zReplaceDialog.do_replace   s   @{""$$ 	5y	**[111EC::j))DD 	 	 	CCC	 	6!%H!5!55E5D3 -c22	c$$q&(9::JJuc"" 	5""1dl&6&6&8&899;5h&&&7799 	%KKt$$$ 	6KKsD$4555eTZZ11222ts   ,A A#"A#c                    	 | j         }|                    d|           |                    ddd           |                    d||           |                    ddd           ||k    r|                    d|           n|                    d||           |                    d           |                                 d S )Nr"   rJ   rK   rL   rM   )r   r\   rU   tag_addseeupdate_idletasks)r   r&   r'   r   s       r   r$   zReplaceDialog.show_hit   s    		 yh&&&ue,,,UE4(((ue,,,D==LL&&&&LLt,,,r   c                 x    	 t          j        | |           | j                            ddd           d | _        d S )NrM   rK   rL   )r   r`   r   rU   r	   r9   s     r   r`   zReplaceDialog.close  s@    /tU+++	UE5111r   r   )F)__name__
__module____qualname__titleiconr   r   r)   r0   r2   r3   r4   rH   r5   r8   r=   r$   r`   __classcell__)r   s   @r   r   r      s!       9ED         "' ' ' '0I I I

: 
: 
:      	$ 	$ 	$ 	$  6 6 6 6p   (  @     .               r   r   c                    ddl m}m}mm ddlm}m}  ||           }|                    d           t          t          |                                                     d          dd                    \  }}|                    d||dz   fz             d	 }d
 }	 ||          }
|
                                  ||
d          |_        |	_                                                             dd                                            fd} ||
d|          }|                                 d S )Nr   )ToplevelTextENDSEL)FrameButtonzTest ReplaceDialog+rN   z+%d+%d   c                      d S r    r   r   r   rX   z)_replace_dialog.<locals>.undo_block_start      r   c                      d S r   r   r   r   r   r_   z(_replace_dialog.<locals>.undo_block_stop  r   r   gray)inactiveselectbackgroundr"   z"This is a sample sTring
Plus MORE.c                                           d            t                                         d            d S )NrK   )ro   r   rU   )r|   r}   r   s   r   show_replacez%_replace_dialog.<locals>.show_replace&  s@    S%%%%UC(((((r   r   )r   command)tkinterrz   r{   r|   r}   tkinter.ttkr~   r   rv   mapintgeometrysplitpackrX   r_   r"   	focus_set)parentrz   r{   r~   r   topxyrX   r_   framer   buttonr|   r}   r   s                @@@r   _replace_dialogr     s   000000000000))))))))
(6

CII"###sFOO%%++C00455DAqLLQCL()))     E#JJE	JJLLL4777D,D*DIIKKKKK>???NN) ) ) ) ) ) )
 VE	<@@@F
KKMMMMMr   __main__)mainzidlelib.idle_test.test_replace   F)	verbosityexit)runr   )rB   r   r   r   idlelib.searchbaser   idlelibr   r   r   r   rs   unittestr   idlelib.idle_test.htestr   r   r   r   <module>r      s  
 
			 ' ' ' ' ' ' ' ' / / / / / /            / / / /"k  k  k  k  k $ k  k  k \  B zD	)QUCCCC++++++C r   