
    .hhF&                         S SK r S SKJrJr  S SKJr  S SKJr  SS jr " S S\5      r	S r
\S	:X  a  S S
KJr  \" SSSS9  S SKJr  \" \
5        gg)    N)	StringVarTclError)SearchDialogBase)searchenginec                     U R                  5       n[        R                  " U5      n[        US5      (       d  [	        X#5      Ul        UR
                  nU R                  SS5      nUR                  XUS9  g )N_replacedialog	sel.firstsel.lastinsert_tags)_rootr   gethasattrReplaceDialogr   open)textr   rootenginedialogsearchphrases         8/opt/python-3.13.8/usr/lib/python3.13/idlelib/replace.pyreplacer      se     ::<Dd#F6+,, -d ;""F88K4L
KKK<    c                      ^  \ rS rSrSrSrU 4S jrSSS.S jjrS rS	 r	SS
 jr
SS jrSS jrS rSS jrSS jrS rS rSS jrSrU =r$ )r       zReplace DialogReplacec                 R   > [         TU ]  X5        [        U5      U l        S U l        g N)super__init__r   replvarr   )selfr   r   	__class__s      r   r    ReplaceDialog.__init__&   s%     	& r   Nr   c                L    [         R                  " XU5        SU l        X0l        g )NT)r   r   okr   )r"   r   r   r   s       r   r   ReplaceDialog.open7   s!     	d,7&r   c                 x    [         R                  " U 5        U R                  SU R                  5      S   U l        g )NzReplace with:r   )r   create_entries
make_entryr!   replentr"   s    r   r)   ReplaceDialog.create_entriesE   s+    ''-EaHr   c                    [         R                  " U 5        U R                  SU R                  5        U R                  SU R                  5        U R                  SU R
                  SS9  U R                  SU R                  5        g )NFindr   zReplace+FindT)isdefzReplace All)r   create_command_buttonsmake_buttonfind_it
replace_itdefault_commandreplace_allr,   s    r   r1   $ReplaceDialog.create_command_buttonsJ   sk     	//5.DOO4)=)=TJ(8(89r   c                 &    U R                  S5        g NF)do_findr"   events     r   r3   ReplaceDialog.find_itV   s    Ur   c                 f    U R                  U R                  5      (       a  U R                  5         g g r   r:   r&   
do_replacer;   s     r   r4   ReplaceDialog.replace_itZ   s&    
 <<  OO !r   c                     U R                  U R                  5      (       a(  U R                  5       (       a  U R                  S5        g g g r9   r?   r;   s     r   r5   ReplaceDialog.default_commandb   s:     <<    U# ! !r   c                     U R                   R                  5       (       a   UR                  U5      nU$ UnU$ ! [        R                   a"    U R                   R                  US5        S n U$ f = f)NzInvalid Replace Expression)r   isreexpandrePatternErrorreport_error)r"   mreplnews       r   _replace_expandReplaceDialog._replace_expandm   sp    ;;hhtn 
 C
 ?? ((/KL 
s   8 2A.-A.c           	         U R                   R                  5       nU(       d  g U R                  R                  5       nU R                  nU R                   R                  XB5      nU(       d  U R                  5         g UR                  SSS5        UR                  SSS5        US   nUS   R                  5       nU R                   R                  5       (       a  SnSnSnS =pUR                  5         U R                   R                  XBXgSUS	9=n(       a  Uu  pkUR                  S
U-  S
US-   -  5      nUR                  5       nU R                  X5      nUc  OUR                  5       u  nnSXo4-  n	SUU4-  n
X:X  a  UR                  SU
5        OKUR                  SU	5        X:w  a  UR!                  X5        U(       a  UR#                  XU R$                  5        U['        U5      -   nSnU R                   R                  XBXgSUS	9=n(       a  M  UR)                  5         U	(       a  U
(       a  U R+                  X5        U R-                  5         g )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grouprM   spanmark_setdeleterX   r   lenundo_block_stopshow_hitclose)r"   r<   progrK   r   reslinecolr&   firstlastrJ   charsorigrL   ijs                    r   r6   ReplaceDialog.replace_allz   s    {{""$||!yykk%%d1IIKue,ue,1v!flln;;DC[[//DEb 0 : :c :GDHHVd]Fd1f,=>E779D&&q/C{668DAqti'EdAY&D{h-h.=KK,KKD,<,<=c#h,CB) [[//DEb 0 : :c :* 	TMM%&

r   c                 :   U R                   R                  5       (       d  gU R                  nU R                   R                  US U5      nU(       d  U R	                  5         gUu  pEUR                  5       u  pgSXF4-  nSXG4-  n	U R                  X5        SU l        g)NFrW   T)r   rY   r   rZ   r[   rb   rg   r&   )
r"   r&   r   rj   rk   rJ   rq   rr   rm   rn   s
             r   r:   ReplaceDialog.do_find   s    
 {{""$$yykk%%dD"5IIKvvx4)#$"e"r   c                 <   U R                   R                  5       nU(       d  gU R                  n UR                  S5      =p4UR                  S5      nU(       d  UR                  S5      =n=pT[
        R                  " U5      u  pgUR                  SU-  SUS-   -  5      nUR                  X5      n	U(       d  gU R                  XR                  R                  5       5      n
U
c  gUR                  SW5        UR                  5         U	R                  5       (       a  UR                  UW5        U
(       a  UR                  X:U R                   5        UR#                  5         U R%                  X2R                  S5      5        SU l        g! [         a    S n GNGf = f)NFr	   r
   rX   rV   rT   T)r   rY   r   indexr   r   get_line_colr   matchrM   r!   rc   r_   ra   rd   rX   r   rf   rg   r&   )r"   ri   r   rm   posrn   rk   rl   ro   rJ   rL   s              r   r@   ReplaceDialog.do_replace   sU   {{""$yy	**[11E::j)D !%H!55E5D --c2	$$q&(9:JJu"""1ll&6&6&89;h&7799KKt$KKD$4$45eZZ12+  	C	s   #F FFc                 F   U R                   nUR                  SU5        UR                  SSS5        UR                  SX5        UR                  SSS5        X:X  a  UR                  SU5        OUR                  SX5        UR	                  S5        UR                  5         g )NrX   rP   rQ   rR   rS   )r   rc   r\   tag_addseeupdate_idletasks)r"   rm   rn   r   s       r   rg   ReplaceDialog.show_hit   s     yyh&ue,UE(ue,=LL&LL,r   c                 x    [         R                  " X5        U R                  R                  SSS5        S U l        g )NrS   rQ   rR   )r   rh   r   r\   r   r;   s     r   rh   ReplaceDialog.close   s.    t+		UE51r   )r   r&   r+   r!   r   )F)__name__
__module____qualname____firstlineno__titleiconr    r   r)   r1   r3   r4   r5   rM   r6   r:   r@   rg   rh   __static_attributes____classcell__)r#   s   @r   r   r       s_     ED "'4 'I

:	$6p(@ .   r   r   c                   ^^^ SSK JnJnJmJm  SSKJnJn  U" U 5      nUR                  S5        [        [        U R                  5       R                  S5      SS  5      u  pgUR                  SXgS-   4-  5        S	 nS
 n	U" U5      n
U
R                  5         U" U
SS9mUTl        U	Tl        TR                  5         TR!                  SS5        TR#                  5         UUU4S jnU" U
SUS9nUR                  5         g )Nr   )ToplevelTextENDSEL)FrameButtonzTest ReplaceDialog+rT   z+%d+%d   c                      g r    r   r   r   r_   )_replace_dialog.<locals>.undo_block_start      r   c                      g r   r   r   r   r   rf   (_replace_dialog.<locals>.undo_block_stop  r   r   gray)inactiveselectbackgroundrX   z"This is a sample sTring
Plus MORE.c                  h   > TR                  TST 5        [        T5        TR                  TST 5        g )NrQ   )r}   r   r\   )r   r   r   s   r   show_replace%_replace_dialog.<locals>.show_replace  s*    S%%UC(r   r   )r   command)tkinterr   r   r   r   tkinter.ttkr   r   r   mapintgeometrysplitpackr_   rf   rX   	focus_set)parentr   r   r   r   topxyr_   rf   framer   buttonr   r   r   s                @@@r   _replace_dialogr     s    00)
6
CII"#sFOO%++C045DALLQCL() #JE	JJL7D,D*DIIKKK>?NN)
 E	<@F
KKMr   __main__)mainzidlelib.idle_test.test_replace   F)	verbosityexit)runr   )rG   r   r   r   idlelib.searchbaser   idlelibr   r   r   r   r   unittestr   idlelib.idle_test.htestr   r   r   r   <module>r      sX    
 ' /  =$a $ a HD z	)QUC+ r   