
    5bhq&                         	 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       yy)    N)	StringVarTclError)SearchDialogBase)searchenginec                     	 | j                         }t        j                  |      }t        |d      st	        ||      |_        |j
                  }| j                  dd      }|j                  | ||       y )N_replacedialog	sel.firstsel.lastinsert_tags)_rootr   gethasattrReplaceDialogr   open)textr   rootenginedialogsearchphrases         9/opt/python-3.12.12/usr/lib/python3.12/idlelib/replace.pyreplacer      sk     ::<Dd#F6+, -dF ;""F88K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                 V    	 t         |   ||       t        |      | _        d | _        y N)super__init__r   replvarr   )selfr   r   	__class__s      r   r   zReplaceDialog.__init__'   s,    	 	v& r   Nr   c                P    	 t        j                  | ||       d| _        || _        y )NT)r   r   okr   )r!   r   r   r   s       r   r   zReplaceDialog.open8   s*    	 	dD,7&r   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_entriesF   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   r-   z$ReplaceDialog.create_command_buttonsK   sp    	
 	//5.DOO4)=)=TJ(8(89r   c                 (    	 | j                  d       y NF)do_findr!   events     r   r/   zReplaceDialog.find_itW   s    !Ur   c                 ^    	 | j                  | j                        r| j                          y y r   r5   r$   
do_replacer6   s     r   r0   zReplaceDialog.replace_it[   s(    	 << OO !r   c                     	 | j                  | j                        r#| j                         r| j                  d       y y y r4   r9   r6   s     r   r1   zReplaceDialog.default_commandc   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PatternErrorreport_error)r!   mreplnews       r   _replace_expandzReplaceDialog._replace_expandn   sp    8;;hhtn 
 C
 ?? ((/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.%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{   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)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    	 {{""$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
   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   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 )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    		 yyh&ue,UE4(ue,D=LL&LLt,r   c                 z    	 t        j                  | |       | j                  j                  ddd       d | _        y )NrJ   rH   rI   )r   r_   r   rS   r   r6   s     r   r_   zReplaceDialog.close   s3    /tU+		UE5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

:	$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+rK   z+%d+%d   c                       y r    r   r   r   rV   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)inactiveselectbackgroundrO   z"This is a sample sTring
Plus MORE.c                  h    j                  d        t               j                  d        y )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)
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   )r?   errorr@   r   r   r   idlelib.searchbaser   idlelibr   r   r   r   ru   unittestr   idlelib.idle_test.htestr   r   r   r   <module>r      sh   
 
(( ' /  =$a $ a HD z	)QUC+ r   