
    z%i'                         	 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
       yy)    N)	StringVarTclError)SearchDialogBase)searchenginec                     	 | j                         }t        j                  |      }t        |d      st	        ||      |_        |j
                  }|j                  | |       y )N_replacedialog)insert_tags)_rootr   gethasattrReplaceDialogr   open)textr	   rootenginedialogs        C/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/replace.pyreplacer      sY     ::<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                 V    	 t         |   ||       t        |      | _        d | _        y N)super__init__r   replvarr	   )selfr   r   	__class__s      r   r   zReplaceDialog.__init__%   s,    	 	v& r   c                 4   	 t        j                  | |       	 |j                  d      }	 |j                  d      }|xs |j                  d      }|xs |}| j	                  ||       d| _        || _        y # t        $ r d }Y [w xY w# t        $ r d }Y Zw xY w)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{+E	::j)D -H-}ueT"&  	E	  	D	s"   A8 B	 8BB	BBc                 x    	 t        j                  |        | j                  d| j                        d   | _        y )NzReplace with:r   )r   create_entries
make_entryr   replentr   s    r   r)   zReplaceDialog.create_entriesN   s.    B''-EaHr   c                    	 t        j                  |        | j                  d| j                         | j                  d| j                         | j                  d| j
                  d       | j                  d| j                         y )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   sp    	
 	//5.DOO4)=)=TJ(8(89r   c                 (    	 | j                  d       y NF)do_findr   events     r   r2   zReplaceDialog.find_it_   s    !Ur   c                 ^    	 | j                  | j                        r| j                          y y r   r8   r%   
do_replacer9   s     r   r3   zReplaceDialog.replace_itc   s(    	 << OO !r   c                     	 | j                  | j                        r#| j                         r| j                  d       y y y r7   r<   r9   s     r   r4   zReplaceDialog.default_commandk   s9    	
 <<  U# ! !r   c                     	 | j                   j                         r	 |j                  |      }|S |}|S # t        j                  $ r" | j                   j                  |d       d }Y |S w xY w)NzInvalid Replace Expression)r   isreexpandreerrorreport_error)r   mreplnews       r   _replace_expandzReplaceDialog._replace_expandv   sp    8;;hhtn 
 C
 88 ((/KL 
s   4 1A)(A)c                 t   	 | j                   j                         }|sy | j                  j                         }| j                  }| j                   j                  ||      }|s| j                          y |j                  ddd       |j                  ddd       |d   }|d   j                         }| j                   j                         rd}d}d}d x}	}
|j                          | j                   j                  ||||d|	      x}r|\  }}|j                  d
|z  d
|dz   z        }|j                         }| j                  ||      }|n|j                         \  }}d||fz  }	d||fz  }
||k(  r|j                  d|
       nH|j                  d|	       |	|
k7  r|j!                  |	|
       |r|j#                  |	|| j$                         |t'        |      z   }d}| j                   j                  ||||d|	      x}r|j)                          |	r|
r| j+                  |	|
       | j-                          y )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   s3   	 {{""$||!yykk%%dD1IIKue,ue,1v!flln;;DC[[//dD#Eb 0 : :c :GD!HHVd]Fd1f,=>E779D&&q$/C{668DAqtQi'EdAY&Dd{h-h.D=KKt,KKsD,<,<=c#h,CB) [[//dD#Eb 0 : :c :* 	TMM%&

r   c                 2   	 | j                   j                         sy| j                  }| j                   j                  |d |      }|s| j	                          y|\  }}|j                         \  }}d||fz  }d||fz  }	| j                  ||	       d| _        y)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    	 {{""$yykk%%dD"5IIKavvx14)#$"eT"r   c                    	 | j                   j                         }|sy| j                  }	 |j                  d      x}}|j                  d      }|s|j                  d      x}x}}t        j                  |      \  }}|j                  d|z  d|dz   z        }|j                  ||      }	|sy| j                  |	| j                  j                               }
|
y|j                  d       |j                          |	j                         r|j                  |       |
r|j                  ||
| j                          |j#                          | j%                  ||j                  d             d| _        y# t        $ r d }Y 6w xY w)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   sd   @{{""$yy	**[11EC::j)D !%H!55E5D3 --c2	c$$q&(9:JJuc"""1dll&6&6&89;h&779KKt$KKsD$4$45eTZZ12+  	C	s   $E8 8FFc                 L   	 | j                   }|j                  d|       |j                  ddd       |j                  d||       |j                  ddd       ||k(  r|j                  d|       n|j                  d||       |j	                  d       |j                          y )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    		 yyh&ue,UE4(ue,D=LL&LLt,r   c                 z    	 t        j                  | |       | j                  j                  ddd       d | _        y )NrM   rK   rL   )r   r`   r   rU   r	   r9   s     r   r`   zReplaceDialog.close  s3    /tU+		UE5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      sT    9ED "'0I

:	$6p(@ . r   r   c                    ddl m}m}mm ddlm}m}  ||       }|j                  d       t        t        | j                         j                  d      dd        \  }}|j                  d||dz   fz         d	 }d
 }	 ||      }
|
j                           ||
d      |_        |	_        j                          j!                  dd       j#                          fd} ||
d|      }|j                          y )Nr   )ToplevelTextENDSEL)FrameButtonzTest ReplaceDialog+rN   z+%d+%d   c                       y r    r   r   r   rX   z)_replace_dialog.<locals>.undo_block_start      r   c                       y 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                  h    j                  d        t               j                  d        y )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)
6
CII"#sFOO%++C045DAqLLQCL() #JE	JJL7D,D*DIIKKK>?NN)
 E	<@F
KKMr   __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 \B z	)QUC+ r   