B YI~d&@sddlZddlmZmZddlmZddlmZddZGdddeZ d d Z e d krdd l m Z e d dddddlmZee dS)N) StringVarTclError)SearchDialogBase) searchenginecCs<|}t|}t|ds(t|||_|j}||dS)N_replacedialog)Z_rootrgethasattr ReplaceDialogropen)textrootengineZdialogr4/opt/alt/python37/lib64/python3.7/idlelib/replace.pyreplaces    rcseZdZdZdZfddZddZddZd d Zdd d Z d ddZ d!ddZ ddZ d"ddZ d#ddZddZddZd$ddZZS)%r zReplace DialogReplacecst||t||_dS)N)super__init__rreplvar)selfr r ) __class__rrr%s zReplaceDialog.__init__cCst||y|d}Wntk r2d}YnXy|d}Wntk rZd}YnX|ph|d}|pp|}|||d|_dS)Nz sel.firstzsel.lastinsertT)rr indexrshow_hitok)rr firstlastrrrr 5s    zReplaceDialog.opencCs"t||d|jd|_dS)Nz Replace with:r)rcreate_entriesZ make_entryrZreplent)rrrrrLs zReplaceDialog.create_entriescCsJt||d|j|d|j|jd|jdd|d|jdS)NZFindrz Replace+FindT)Zisdefz Replace All)rcreate_command_buttonsZ make_buttonfind_it replace_itdefault_command replace_all)rrrrrQs  z$ReplaceDialog.create_command_buttonsNcCs|ddS)NF)do_find)reventrrrr]szReplaceDialog.find_itcCs||jr|dS)N)r#r do_replace)rr$rrrr as zReplaceDialog.replace_itcCs"||jr|r|ddS)NF)r#rr%)rr$rrrr!is zReplaceDialog.default_commandcCsL|jrDy||}WqHtjk r@|j|dd}YqHXn|}|S)NzInvalid Replace Expression)r ZisreexpandreerrorZ report_error)rmreplnewrrr_replace_expandts  zReplaceDialog._replace_expandcCs|j}|sdS|j}|j}|j||}|s@|dS|ddd|ddd|d}|d}|j rd}d}d}d} } | x|jj ||||d|d }|sP|\}} |d |d |d} | } | | |}|dkrP| \}}d ||f} d ||f} || kr0|d | n4|d | | | krR|| | |rd|| ||t|}d}qW|| r| r|| | |dS) Nselz1.0endhitrTF)wraprz%d.0z%d.%dr)r getprogrrr search_textbell tag_removestartZiswrapundo_block_startZsearch_forwardgroupr,spanmark_setdeleterlenundo_block_stoprclose)rr$progr*r reslinecolrrrr)charsZorigr+ijrrrr"s\                 zReplaceDialog.replace_allFc Csv|jsdS|j}|j|d|}|s4|dS|\}}|\}}d||f}d||f} ||| d|_dS)NFz%d.%dT)r r2r r3r4r9rr) rrr r@rAr)rDrErrrrrr#s     zReplaceDialog.do_findc Cs|j}|sdS|j}y|d}}|d}Wntk rLd}YnX|sd|d}}}t|\}}|d|d|d}|||} |sdS| | |j } | dkrdS| d|| | r|||| r||| ||||dd|_dS)NFz sel.firstzsel.lastrz%d.0r0T)r r2r rrrZ get_line_colrmatchr,rr:r7r8r;rr=rr) rr?r rposrrArBrCr)r+rrrr%s:      zReplaceDialog.do_replacecCsv|j}|d||ddd|d|||ddd||krR|d|n|d|||d|dS)Nrr-z1.0r.r/)r r:r5tag_addZseeZupdate_idletasks)rrrr rrrrs   zReplaceDialog.show_hitcCs t|||jddddS)Nr/z1.0r.)rr>r r5)rr$rrrr>s zReplaceDialog.close)N)N)N)N)F)N)__name__ __module__ __qualname__titleZiconrr rrrr r!r,r"r#r%rr> __classcell__rr)rrr s     ;  r c sddlm}m}mmddlm}m}||}|dt t | ddd\}}| d||dfd d }d d } ||} | || d d|_| _ ddfdd} || d| d} | dS)Nr)ToplevelTextENDSEL)FrameButtonzTest ReplaceDialog+r0z+%d+%dcSsdS)Nrrrrrr7sz)_replace_dialog..undo_block_startcSsdS)Nrrrrrr=sz(_replace_dialog..undo_block_stopZgray)Zinactiveselectbackgroundrz"This is a sample sTring Plus MORE.cs(dtddS)Nz1.0)rHrr5r)rPrQr rr show_replace&sz%_replace_dialog..show_replacer)r Zcommand)tkinterrNrOrPrQZ tkinter.ttkrRrSrLmapintZgeometrysplitpackr7r=rZ focus_set) parentrNrOrRrStopxyr7r=framerVZbuttonr)rPrQr r_replace_dialog s&    ra__main__)mainzidlelib.idle_test.test_replaceF) verbosityexit)run)r'rWrrZidlelib.searchbaserZidlelibrrr rarIZunittestrcZidlelib.idle_test.htestrgrrrrs  o!