U Å:âe¡&ã@sŠddlZddlmZmZddlmZddlmZdd„ZGdd„deƒZ d d „Z e d kr†dd l m Z e d dddddlmZee ƒdS)éN)Ú StringVarÚTclError)ÚSearchDialogBase)Ú searchenginecCs<| ¡}t |¡}t|dƒs(t||ƒ|_|j}| |¡dS)NÚ_replacedialog)Z_rootrÚgetÚhasattrÚ ReplaceDialogrÚopen)ÚtextÚrootÚengineZdialog©rú4/usr/local/python38/lib/python3.8/idlelib/replace.pyÚreplaces    rcseZdZdZdZ‡fdd„Zdd„Zdd„Zd d „Zdd d „Z d dd„Z d!dd„Z dd„Z d"dd„Z d#dd„Zdd„Zdd„Zd$dd„Z‡ZS)%r zReplace DialogÚReplacecstƒ ||¡t|ƒ|_dS©N)ÚsuperÚ__init__rÚreplvar)Úselfr r ©Ú __class__rrr%s zReplaceDialog.__init__cCsˆt ||¡z| d¡}Wntk r2d}YnXz| d¡}Wntk rZd}YnX|ph| d¡}|pp|}| ||¡d|_dS)Nú sel.firstúsel.lastÚinsertT)rr ÚindexrÚshow_hitÚok)rr ÚfirstÚlastrrrr 5s    zReplaceDialog.opencCs"t |¡| d|j¡d|_dS)Nz Replace with:r)rÚcreate_entriesZ make_entryrZreplent©rrrrr!Ls zReplaceDialog.create_entriescCsJt |¡| d|j¡| d|j¡|jd|jdd| d|j¡dS)NZFindrz Replace+FindT)Zisdefz Replace All)rÚcreate_command_buttonsZ make_buttonÚfind_itÚ replace_itÚdefault_commandÚ replace_allr"rrrr#Qs  z$ReplaceDialog.create_command_buttonsNcCs| d¡dS©NF)Údo_find©rÚeventrrrr$]szReplaceDialog.find_itcCs| |j¡r| ¡dSr©r)rÚ do_replacer*rrrr%as zReplaceDialog.replace_itcCs"| |j¡r| ¡r| d¡dSr(r,r*rrrr&is zReplaceDialog.default_commandcCsL|j ¡rDz| |¡}WqHtjk r@|j |d¡d}YqHXn|}|S)NzInvalid Replace Expression)r ZisreÚexpandÚreÚerrorZ report_error)rÚmÚreplÚnewrrrÚ_replace_expandts  zReplaceDialog._replace_expandcCs¤|j ¡}|sdS|j ¡}|j}|j ||¡}|s@| ¡dS| ddd¡| ddd¡|d}|d ¡}|j  ¡r‚d}d}d}d} } |  ¡|jj ||||d|d }|s¶qx|\}} | d |d |d¡} |   ¡} |  | |¡}|dkröqx|  ¡\}}d ||f} d ||f} || kr2| d | ¡n4| d | ¡| | krT| | | ¡|rf| | |¡|t|ƒ}d}q–| ¡| r˜| r˜| | | ¡| ¡dS) NÚselú1.0ÚendÚhitréTF)Úwraprú%d.0ú%d.%dr)r Úgetprogrrr Ú search_textÚbellÚ tag_removeÚstartZiswrapÚundo_block_startZsearch_forwardÚgroupr4ÚspanÚmark_setÚdeleterÚlenÚundo_block_stoprÚclose)rr+Úprogr2r ÚresÚlineÚcolrrr r1ÚcharsZorigr3ÚiÚjrrrr's^    ÿ            zReplaceDialog.replace_allFc Csv|j ¡sdS|j}|j |d|¡}|s4| ¡dS|\}}| ¡\}}d||f}d||f} | || ¡d|_dS)NFr<T)r r=r r>r?rDrr) rrr rKrLr1rOrPrr rrrr)¼s     zReplaceDialog.do_findc Cs|j ¡}|sdS|j}z| d¡}}| d¡}Wntk rLd}YnX|sd| d¡}}}t |¡\}}| d|d|d¡}| ||¡} |sždS|  | |j  ¡¡} | dkr¼dS|  d|¡|  ¡|   ¡rä| ||¡| rô| || ¡| ¡| || d¡¡d|_dS)NFrrrr;r9T)r r=r rrrZ get_line_colrÚmatchr4rrErBrCrFrrHrr) rrJr rÚposr rLrMrNr1r3rrrr-Ðs:      zReplaceDialog.do_replacecCsv|j}| d|¡| ddd¡| d||¡| ddd¡||krR| d|¡n| d||¡| d¡| ¡dS)Nrr5r6r7r8)r rEr@Útag_addZseeZupdate_idletasks)rrr r rrrrðs   zReplaceDialog.show_hitcCs t ||¡|j ddd¡dS)Nr8r6r7)rrIr r@r*rrrrIs zReplaceDialog.close)N)N)N)N)F)N)Ú__name__Ú __module__Ú __qualname__ÚtitleZiconrr r!r#r$r%r&r4r'r)r-rrIÚ __classcell__rrrrr s     ;  r c sîddlm}m}m‰m‰ddlm}m}||ƒ}| d¡t t |  ¡  d¡dd…ƒ\}}|  d||df¡d d „}d d „} ||ƒ} |   ¡|| d d‰|ˆ_| ˆ_ˆ  ¡ˆ dd¡ˆ ¡‡‡‡fdd„} || d| d} |   ¡dS)Nr)ÚToplevelÚTextÚENDÚSEL)ÚFrameÚButtonzTest ReplaceDialogú+r9z+%d+%dé¯cSsdSrrrrrrrBsz)_replace_dialog..undo_block_startcSsdSrrrrrrrHsz(_replace_dialog..undo_block_stopZgray)Zinactiveselectbackgroundrz"This is a sample sTring Plus MORE.cs(ˆ ˆdˆ¡tˆƒˆ ˆdˆ¡dS)Nr6)rSrr@r©r[r\r rrÚ show_replace&sz%_replace_dialog..show_replacer)r Zcommand)ÚtkinterrYrZr[r\Z tkinter.ttkr]r^rWÚmapÚintZgeometryÚsplitÚpackrBrHrZ focus_set) ÚparentrYrZr]r^ÚtopÚxÚyrBrHÚframerbZbuttonrrarÚ_replace_dialog s&    rmÚ__main__)Úmainzidlelib.idle_test.test_replaceéF)Ú verbosityÚexit)Úrun)r/rcrrZidlelib.searchbaserZidlelibrrr rmrTZunittestroZidlelib.idle_test.htestrsrrrrÚs  o!