
    3\hq&                         	 d dl Z e j        e _        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d          }|                    | ||           d S )N_replacedialog	sel.firstsel.lastinsert_tags)_rootr   gethasattrReplaceDialogr   open)textr   rootenginedialogsearchphrases         9/opt/python-3.11.14/usr/lib/python3.11/idlelib/replace.pyreplacer      s     ::<<Dd##F6+,, < -dF ; ;"F88K44L
KKlK<<<<<    c                        e Zd Z	 dZdZ fdZdd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   Nr   c                P    	 t          j        | ||           d| _        || _        d S )NT)r   r   okr   )r!   r   r   r   s       r   r   zReplaceDialog.open8   s3    	 	dD,777&r   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_entriesF   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   r-   z$ReplaceDialog.create_command_buttonsK   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   r/   zReplaceDialog.find_itW   s    !Ur   c                 h    	 |                      | j                  r|                                  d S d S r   r5   r$   
do_replacer6   s     r   r0   zReplaceDialog.replace_it[   s?    	 <<   	OO	 	r   c                     	 |                      | j                  r+|                                 r|                      d           d S d S d S r4   r9   r6   s     r   r1   zReplaceDialog.default_commandc   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PatternErrorreport_error)r!   mreplnews       r   _replace_expandzReplaceDialog._replace_expandn   s|    8; 	hhtnn?   ((/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.%dinsert)r   getprogr    r   r   search_textbell
tag_removestartiswrapundo_block_startsearch_forwardgrouprE   spanmark_setdeleterO   r   lenundo_block_stopshow_hitclose)r!   r7   progrC   r   reslinecolr$   firstlastrB   charsorigrD   ijs                    r   r2   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 )NFrN   T)r   rP   r   rQ   rR   rY   r^   r$   )
r!   r$   r   ra   rb   rB   rh   ri   rd   re   s
             r   r5   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
   rO   rM   rK   T)r   rP   r   indexr   r   get_line_colr   matchrE   r    rZ   rV   rX   r[   rO   r   r]   r^   r$   )r!   r`   r   rd   posre   rb   rc   rf   rB   rD   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 )NrO   rG   rH   rI   rJ   )r   rZ   rS   tag_addseeupdate_idletasks)r!   rd   re   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 )NrJ   rH   rI   )r   r_   r   rS   r   r6   s     r   r_   zReplaceDialog.close   s@    /tU+++	UE5111r   r   )F)__name__
__module____qualname__titleiconr   r   r&   r-   r/   r0   r1   rE   r2   r5   r:   r^   r_   __classcell__)r"   s   @r   r   r   !   s-       9ED         "'4 ' ' ' ' '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+rK   z+%d+%d   c                      d S r    r   r   r   rV   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)inactiveselectbackgroundrO   z"This is a sample sTring
Plus MORE.c                                           d            t                                         d            d S )NrH   )rq   r   rS   )r~   r   r   s   r   show_replacez%_replace_dialog.<locals>.show_replace  s@    S%%%%UC(((((r   r   )r   command)tkinterr|   r}   r~   r   tkinter.ttkr   r   rx   mapintgeometrysplitpackrV   r]   rO   	focus_set)parentr|   r}   r   r   topxyrV   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   )r?   errorr@   r   r   r   idlelib.searchbaser   idlelibr   r   r   r   ru   unittestr   idlelib.idle_test.htestr   r   r   r   <module>r      s  
 
			( ' ' ' ' ' ' ' ' / / / / / /            = = = =$a  a  a  a  a $ a  a  a H  D zD	)QUCCCC++++++C r   