a  ze&@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)_rootrgethasattr ReplaceDialogropen)textrootengineZdialogrC/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/replace.pyreplaces    rcseZdZdZdZfddZddZddZd d Zdd d Z d ddZ d!ddZ ddZ d"ddZ d#ddZddZddZd$ddZZS)%r zReplace DialogReplacecst||t||_dSN)super__init__rreplvar)selfr r __class__rrr%s zReplaceDialog.__init__cCst||z|d}Wnty0d}Yn0z|d}WntyVd}Yn0|pd|d}|pl|}|||d|_dS)N sel.firstsel.lastinsertT)rr indexrshow_hitok)rr firstlastrrrr 5s      zReplaceDialog.opencCs"t||d|jd|_dS)Nz Replace with:r)rcreate_entriesZ make_entryrZreplentrrrrr"Ls 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_allr#rrrr$Qs  z$ReplaceDialog.create_command_buttonsNcCs|ddSNF)do_findreventrrrr%]szReplaceDialog.find_itcCs||jr|dSrr*r do_replacer+rrrr&as zReplaceDialog.replace_itcCs"||jr|r|ddSr)r-r+rrrr'is zReplaceDialog.default_commandcCsJ|jrBz||}WqFtjy>|j|dd}YqF0n|}|S)NzInvalid Replace Expression)rZisreexpandreerrorZ report_error)rmreplnewrrr_replace_expandts  zReplaceDialog._replace_expandcCs|j}|sdS|j}|j}|j||}|s@|dS|ddd|ddd|d}|d}|j rd}d}d}d} } | |jj ||||d|d }|sqx|\}} |d |d |d} | } | | |}|durqx| \}}d ||f} d ||f} || kr2|d | n4|d | | | krT|| | |rf|| ||t|}d}q|| r| r|| | |dS) Nsel1.0endhitrTF)wrapr%d.0%d.%dr)rgetprogrrr search_textbell tag_removestartZiswrapundo_block_startZsearch_forwardgroupr5spanmark_setdeleterlenundo_block_stoprclose)rr,progr3r reslinecolrr r!r2charsZorigr4ijrrrr(s\                zReplaceDialog.replace_allFc Csv|jsdS|j}|j|d|}|s4|dS|\}}|\}}d||f}d||f} ||| d|_dS)NFr=T)rr>r r?r@rErr) rrr rLrMr2rPrQr r!rrrr*s     zReplaceDialog.do_findc Cs|j}|sdS|j}z|d}}|d}WntyJd}Yn0|sb|d}}}t|\}}|d|d|d}|||} |sdS| | |j } | durdS| d|| | r|||| r||| ||||dd|_dS)NFrrrr<r:T)rr>r rrrZ get_line_colrmatchr5rrFrCrDrGrrIrr) rrKr r posr!rMrNrOr2r4rrrr.s:       zReplaceDialog.do_replacecCsv|j}|d||ddd|d|||ddd||krR|d|n|d|||d|dS)Nrr6r7r8r9)r rFrAtag_addZseeZupdate_idletasks)rr r!r rrrrs   zReplaceDialog.show_hitcCs t|||jddddS)Nr9r7r8)rrJr rAr+rrrrJs zReplaceDialog.close)N)N)N)N)F)N)__name__ __module__ __qualname__titleZiconrr r"r$r%r&r'r5r(r*r.rrJ __classcell__rrrrr 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+r:z+%d+%dcSsdSrrrrrrrCsz)_replace_dialog..undo_block_startcSsdSrrrrrrrIsz(_replace_dialog..undo_block_stopZgray)Zinactiveselectbackgroundrz"This is a sample sTring Plus MORE.cs(dtddS)Nr7)rTrrArr\r]r rr show_replace&sz%_replace_dialog..show_replacer)r Zcommand)tkinterrZr[r\r]Z tkinter.ttkr^r_rXmapintZgeometrysplitpackrCrIrZ focus_set) parentrZr[r^r_topxyrCrIframercZbuttonrrbr_replace_dialog s&    rn__main__)mainzidlelib.idle_test.test_replaceF) verbosityexit)run)r0rdrrZidlelib.searchbaserZidlelibrrr rnrUZunittestrpZidlelib.idle_test.htestrtrrrrs  o!