PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  pY9@sdZddlTddlmZddlmZddlZddZGdd d eZd d Z e d krddl Z e j d ddddddl mZee dS)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)SearchDialogBaseNcCsV|j}tj|}t|ds<t|||_|j}|j|dS)zvReturns a singleton ReplaceDialog instance.The single dialog saves user entries and preferences across instances._replacedialogN)Z_rootrgethasattr ReplaceDialogropen)textrootengineZdialogr ,/opt/python35/lib/python3.5/ReplaceDialog.pyreplace s   rc@seZdZdZdZddZddZddZd d Zd d d Z d ddZ d ddZ ddZ d ddZ dddZddZddZd ddZd S)rzReplace DialogReplacecCs&tj|||t||_dS)N)r__init__Z StringVarreplvar)selfr r r r rrszReplaceDialog.__init__cCstj||y|jd}Wntk r=d}YnXy|jd}Wntk rkd}YnX|p~|jd}|p|}|j||d|_dS)zDisplay the replace dialogz sel.firstNzsel.lastinsert)rr indexTclErrorshow_hitok)rr firstlastr r rr !s     zReplaceDialog.opencCs-tj||jd|jd|_dS)z#Create label and text entry widgetsz Replace with:rN)rcreate_entriesZ make_entryrZreplent)rr r rr1s zReplaceDialog.create_entriescCs`tj||jd|j|jd|j|jd|jd|jd|jdS)NZFindrz Replace+Findrz Replace All)rcreate_command_buttonsZ make_buttonfind_it replace_itdefault_command replace_all)rr r rr6s  z$ReplaceDialog.create_command_buttonsNcCs|jddS)Nr)do_find)reventr r rr=szReplaceDialog.find_itcCs |j|jr|jdS)N)r"r do_replace)rr#r r rr@szReplaceDialog.replace_itcCs/|j|jr+|jr+|jddS)zReplace and find next.rN)r"rr$)rr#r r rr Ds zReplaceDialog.default_commandc Cs`|jjrVy|j|}Wq\tjk rR|jj|dd}Yq\Xn|}|S)za Helper function for expanding a regular expression in the replace field, if needed. zInvalid Replace ExpressionN)r ZisreexpandreerrorZ report_error)rmreplnewr r r_replace_expandKszReplaceDialog._replace_expandcCs0|jj}|sdS|jj}|j}|jj||}|sZ|jdS|jddd|jddd|d}|dj}|jj rd}d}d}d} } |j x*|jj ||||d|}|sP|\}} |jd|d|d} | j } |j | |}|dkrOP| j\}}d ||f} d ||f} || kr|jd | nB|jd | | | kr|j| | |r|j| ||t|}d}qW|j| r"| r"|j| | |jdS) z4Replace all instances of patvar with replvar in textNselz1.0endhitrrz%d.0z%d.%dr)r getprogrrr search_textbell tag_removestartZiswrapundo_block_startZsearch_forwardgroupr+spanmark_setdeleterlenundo_block_stoprclose)rr#progr)r reslinecolrrrr(charsZorigr*ijr r rr!YsZ     !        zReplaceDialog.replace_allrc Cs|jjsdS|j}|jj|d|}|sH|jdS|\}}|j\}}d||f}d||f} |j|| d|_dS)NFz%d.%drT)r r/r r0r1r6rr) rrr r=r>r(rArBrrr r rr"s    zReplaceDialog.do_findc Csv|jj}|sdS|j}y&|jd}}|jd}Wntk rbd}YnX|s|jd}}}tj|\}}|jd|d|d}|j||} |sdS|j | |j j} | dkrdS|j d||j | j r0|j||| rF|j|| |j|j||jdd|_dS) NFz sel.firstzsel.lastrz%d.0rrT)r r/r rrrZ get_line_colrmatchr+rr7r4r5r8rr:rr) rr<r rposrr>r?r@r(r*r r rr$s:        zReplaceDialog.do_replacecCs|j}|jd||jddd|jd|||jddd||krq|jd|n|jd|||jd|jdS)zMHighlight text from 'first' to 'last'. 'first', 'last' - Text indicesrr,z1.0r-r.N)r r7r2tag_addZseeZupdate_idletasks)rrrr r r rrs   zReplaceDialog.show_hitcCs*tj|||jjddddS)Nr.z1.0r-)rr;r r2)rr#r r rr;szReplaceDialog.close)__name__ __module__ __qualname__titleZiconrr rrrrr r+r!r"r$rr;r r r rrs      2  rc st|}|jdttttjd|j\}}}}|jd||dfdd}dd}t|d d |_ |_ j j d d j fd d}t|ddd|} | j dS)zhtest wrapper functionzTest ReplaceDialogz[x+]z+%d+%dcSsdS)Nr r r r rr4sz)_replace_dialog..undo_block_startcSsdS)Nr r r r rr:sz(_replace_dialog..undo_block_stopZinactiveselectbackgroundZgrayrz"This is a sample sTring Plus MORE.cs4jtdttjtdtdS)Nz1.0)rEZSELZENDrr2r )r r r show_replaces z%_replace_dialog..show_replacer rZcommandN)ZToplevelrIlistmapintr&splitZgeometryZTextr4r:packrZ focus_setZButton) parentZboxwidthZheightxyr4r:rKZbuttonr )r r_replace_dialogs  3      rU__main__z$idlelib.idle_test.test_replacedialog verbosityexitF)run)__doc__tkinterZidlelibrZidlelib.SearchDialogBaserr&rrrUrFZunittestmainZidlelib.idle_test.htestrZr r r rs