£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

Yf9                 @   s   d  Z  d d l Td d l m Z d d l m Z d d l Z d d   Z Gd d	   d	 e  Z d
 d   Z	 e
 d k r d d l Z e j d d d d d d d l m Z e e	  d S)zReplace dialog for IDLE. Inherits SearchDialogBase for GUI.
Uses idlelib.SearchEngine for search capability.
Defines various replace related functions like replace, replace all,
replace+find.
    )*)SearchEngine)SearchDialogBaseNc             C   sV   |  j    } t j |  } t | d  s< t | |  | _ | j } | j |   d S)zvReturns a singleton ReplaceDialog instance.The single dialog
     saves user entries and preferences across instances._replacedialogN)Z_rootr   gethasattrReplaceDialogr   open)textrootengineZdialog r   :/opt/alt/python35/lib64/python3.5/idlelib/ReplaceDialog.pyreplace   s    	r   c               @   s   e  Z d  Z d Z d Z d d   Z d d   Z d d   Z d	 d
   Z d d d  Z	 d d d  Z
 d d d  Z d d   Z d d d  Z d d d  Z d d   Z d d   Z d d d  Z d S)r   zReplace DialogReplacec             C   s&   t  j |  | |  t |  |  _ d  S)N)r   __init__Z	StringVarreplvar)selfr   r   r   r   r   r      s    zReplaceDialog.__init__c             C   s   t  j |  |  y | j d  } Wn t k
 r= d } Yn Xy | j d  } Wn t k
 rk d } Yn X| p~ | j d  } | p | } |  j | |  d |  _ d S)zDisplay the replace dialogz	sel.firstNzsel.lastinsert   )r   r	   indexTclErrorshow_hitok)r   r
   firstlastr   r   r   r	   !   s    zReplaceDialog.openc             C   s-   t  j |   |  j d |  j  d |  _ d S)z#Create label and text entry widgetszReplace with:r   N)r   create_entriesZ
make_entryr   Zreplent)r   r   r   r   r   1   s    zReplaceDialog.create_entriesc             C   s`   t  j |   |  j d |  j  |  j d |  j  |  j d |  j d  |  j d |  j  d  S)NZFindr   zReplace+Findr   zReplace All)r   create_command_buttonsZmake_buttonfind_it
replace_itdefault_commandreplace_all)r   r   r   r   r   6   s
    z$ReplaceDialog.create_command_buttonsNc             C   s   |  j  d  d  S)Nr   )do_find)r   eventr   r   r   r   =   s    zReplaceDialog.find_itc             C   s    |  j  |  j  r |  j   d  S)N)r"   r   
do_replace)r   r#   r   r   r   r   @   s    zReplaceDialog.replace_itc             C   s/   |  j  |  j  r+ |  j   r+ |  j  d  d S)zReplace and find next.r   N)r"   r   r$   )r   r#   r   r   r   r    D   s    zReplaceDialog.default_commandc             C   s`   |  j  j   rV y | j |  } Wq\ t j k
 rR |  j  j | d  d } Yq\ Xn | } | S)za Helper function for expanding a regular expression
            in the replace field, if needed. zInvalid Replace ExpressionN)r   ZisreexpandreerrorZreport_error)r   mreplnewr   r   r   _replace_expandK   s    zReplaceDialog._replace_expandc             C   s0  |  j  j   } | s d S|  j j   } |  j } |  j  j | |  } | sZ | j   d S| j d d d  | j d d d  | d } | d j   } |  j  j	   r d } d } d } d }	 }
 | j
   x*|  j  j | | | | d |  } | s P| \ } } | j d | d | d  } | j   } |  j | |  } | d k rOP| j   \ } } d	 | | f }	 d	 | | f }
 | | k r| j d
 |
  nB | j d
 |	  |	 |
 k r| j |	 |
  | r| j |	 |  | t |  } d } q W| j   |	 r"|
 r"|  j |	 |
  |  j   d S)z4Replace all instances of patvar with replvar in textNselz1.0endhitr   r   z%d.0z%d.%dr   )r   getprogr   r   r
   search_textbell
tag_removestartZiswrapundo_block_startZsearch_forwardgroupr+   spanmark_setdeleter   lenundo_block_stopr   close)r   r#   progr)   r
   reslinecolr   r   r   r(   charsZorigr*   ijr   r   r   r!   Y   sZ    	



!

zReplaceDialog.replace_allr   c       
      C   s   |  j  j   s d S|  j } |  j  j | d  |  } | sH | j   d S| \ } } | j   \ } } d | | f } d | | f }	 |  j | |	  d |  _ d S)NFz%d.%dr   T)r   r/   r
   r0   r1   r6   r   r   )
r   r   r
   r=   r>   r(   rA   rB   r   r   r   r   r   r"      s    	
	zReplaceDialog.do_findc             C   sv  |  j  j   } | s d S|  j } y& | j d  } } | j d  } Wn t k
 rb d  } Yn X| s | j d  } } } t j |  \ } } | j d | d | d  } | j | |  }	 | s d S|  j	 |	 |  j
 j    }
 |
 d  k r d S| j d |  | j   |	 j   r0| j | |  |
 rF| j | |
  | j   |  j | | j d   d |  _ d S)	NFz	sel.firstzsel.lastr   z%d.0r   r   T)r   r/   r
   r   r   r   Zget_line_colr   matchr+   r   r7   r4   r5   r8   r   r:   r   r   )r   r<   r
   r   posr   r>   r?   r@   r(   r*   r   r   r   r$      s:    	

	zReplaceDialog.do_replacec             C   s   |  j  } | j d |  | j d d d  | j d | |  | j d d d  | | k rq | j d |  n | j d | |  | j d  | j   d S)zMHighlight text from 'first' to 'last'.
        'first', 'last' - Text indicesr   r,   z1.0r-   r.   N)r
   r7   r2   tag_addZseeZupdate_idletasks)r   r   r   r
   r   r   r   r      s    	zReplaceDialog.show_hitc             C   s*   t  j |  |  |  j j d d d  d  S)Nr.   z1.0r-   )r   r;   r
   r2   )r   r#   r   r   r   r;      s    zReplaceDialog.close)__name__
__module____qualname__titleZiconr   r	   r   r   r   r   r    r+   r!   r"   r$   r   r;   r   r   r   r   r      s   2r   c       
         s   t  |   } | j d  t t t t j d |  j      \ } } } } | j d | | d f  d d   } d d   } t | d	 d
   |   _	 |   _
   j     j d d    j     f d d   } t | d d d | }	 |	 j   d S)zhtest wrapper functionzTest ReplaceDialogz[x+]z+%d+%d   c               S   s   d  S)Nr   r   r   r   r   r4      s    z)_replace_dialog.<locals>.undo_block_startc               S   s   d  S)Nr   r   r   r   r   r:      s    z(_replace_dialog.<locals>.undo_block_stopZinactiveselectbackgroundZgrayr   z"This is a sample sTring
Plus MORE.c                  s4     j  t d t  t      j t d t  d  S)Nz1.0)rE   ZSELZENDr   r2   r   )r
   r   r   show_replace   s    
z%_replace_dialog.<locals>.show_replacer
   r   ZcommandN)ZToplevelrI   listmapintr&   splitZgeometryZTextr4   r:   Zpackr   Z	focus_setZButton)
parentZboxwidthZheightxyr4   r:   rK   Zbuttonr   )r
   r   _replace_dialog   s    3		

rT   __main__z$idlelib.idle_test.test_replacedialog	verbosity   exitF)run)__doc__ZtkinterZidlelibr   Zidlelib.SearchDialogBaser   r&   r   r   rT   rF   ZunittestmainZidlelib.idle_test.htestrY   r   r   r   r   <module>   s   
