a 9êdg¡&ã@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)Ú_rootrÚgetÚhasattrÚ ReplaceDialogrÚopen)ÚtextÚrootÚengineZdialog©rú+/usr/local/lib/python3.9/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¡}Wnty0d}Yn0z| d¡}WntyVd}Yn0|pd| d¡}|pl|}| ||¡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_commandcCsJ|j ¡rBz| |¡}WqFtjy>|j |d¡d}YqF0n|}|S)NzInvalid Replace Expression)rZisreÚ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¡} |   ¡} |  | |¡}|durö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Úgroupr5ÚspanÚmark_setÚdeleterÚlenÚundo_block_stoprÚclose)rr,Úprogr3r ÚresÚlineÚcolrr r!r2ÚcharsZorigr4ÚiÚjrrrr(s\    ÿ            zReplaceDialog.replace_allFc Csv|j ¡sdS|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¡}| ||¡} |sœdS|  | |j  ¡¡} | durºdS|  d|¡|  ¡|   ¡râ| ||¡| rò| || ¡| ¡| || d¡¡d|_dS)NFrrrr<r:T)rr>r rrrZ get_line_colrÚmatchr5rrFrCrDrGrrIrr) rrKr r Úposr!rMrNrOr2r4rrrr.Ðs:       zReplaceDialog.do_replacecCsv|j}| d|¡| ddd¡| d||¡| ddd¡||krR| d|¡n| d||¡| d¡| ¡dS)Nrr6r7r8r9)r rFrAÚtag_addZseeZupdate_idletasks)rr r!r rrrrðs   zReplaceDialog.show_hitcCs t ||¡|j ddd¡dS)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 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ú+r:z+%d+%dé¯cSsdSrrrrrrrCsz)_replace_dialog..undo_block_startcSsdSrrrrrrrIsz(_replace_dialog..undo_block_stopZgray)Zinactiveselectbackgroundrz"This is a sample sTring Plus MORE.cs(ˆ ˆdˆ¡tˆƒˆ ˆdˆ¡dS)Nr7)rTrrAr©r\r]r rrÚ show_replace&sz%_replace_dialog..show_replacer)r Zcommand)ÚtkinterrZr[r\r]Z tkinter.ttkr^r_rXÚmapÚintZgeometryÚsplitÚpackrCrIrZ focus_set) ÚparentrZr[r^r_ÚtopÚxÚyrCrIÚframercZbuttonrrbrÚ_replace_dialog s&    rnÚ__main__)Úmainzidlelib.idle_test.test_replaceéF)Ú verbosityÚexit)Úrun)r0rdrrZidlelib.searchbaserZidlelibrrr rnrUZunittestrpZidlelib.idle_test.htestrtrrrrÚs  o!