3 2aN@sddlZddlmZmZddlmZddlmZddZGdddeZ d d Z e d krdd l m Z e d dddddlmZee dS)N) StringVarTclError)SearchDialogBase) searchenginecCs<|j}tj|}t|ds(t|||_|j}|j|dS)N_replacedialog)Z_rootrgethasattr ReplaceDialogropen)textrootengineZdialogr,/opt/alt/python36/lib64/python3.6/replace.pyreplace s    rc@seZdZdZdZddZddZddZd d Zdd d Z d ddZ d!ddZ ddZ d"ddZ d#ddZddZddZd$ddZd S)%r zReplace DialogReplacecCstj|||t||_dS)N)r__init__rreplvar)selfr r rrrrszReplaceDialog.__init__cCstj||y|jd}Wntk r2d}YnXy|jd}Wntk rZd}YnX|ph|jd}|pp|}|j||d|_dS)Nz sel.firstzsel.lastinsert)rr indexrshow_hitok)rr firstlastrrrr !s    zReplaceDialog.opencCs"tj||jd|jd|_dS)Nz Replace with:r)rcreate_entriesZ make_entryrZreplent)rrrrr1s zReplaceDialog.create_entriescCsHtj||jd|j|jd|j|jd|jd|jd|jdS)NZFindrz Replace+Findrz Replace All)rcreate_command_buttonsZ make_buttonfind_it replace_itdefault_command replace_all)rrrrr6s  z$ReplaceDialog.create_command_buttonsNcCs|jddS)Nr)do_find)reventrrrr=szReplaceDialog.find_itcCs|j|jr|jdS)N)r"r do_replace)rr#rrrr@s zReplaceDialog.replace_itcCs"|j|jr|jr|jddS)Nr)r"rr$)rr#rrrr Ds zReplaceDialog.default_commandc CsL|jjrDy|j|}WqHtjk r@|jj|dd}YqHXn|}|S)NzInvalid Replace Expression)r ZisreexpandreerrorZ report_error)rmreplnewrrr_replace_expandKs  zReplaceDialog._replace_expandcCs|jj}|sdS|jj}|j}|jj||}|s@|jdS|jddd|jddd|d}|dj}|jj rd}d}d}d} } |j x|jj ||||d|}|sP|\}} |jd|d|d} | j } |j | |}|dkrP| j\}}d||f} d||f} || kr.|jd | n4|jd | | | krP|j| | |rb|j| ||t|}d}qW|j| r| r|j| | |jdS) Nselz1.0endhitrrz%d.0z%d.%dr)r getprogrrr search_textbell tag_removestartZiswrapundo_block_startZsearch_forwardgroupr+spanmark_setdeleterlenundo_block_stoprclose)rr#progr)r reslinecolrrrr(charsZorigr*ijrrrr!YsZ                zReplaceDialog.replace_allrc Csv|jjsdS|j}|jj|d|}|s4|jdS|\}}|j\}}d||f}d||f} |j|| d|_dS)NFz%d.%drT)r r/r r0r1r6rr) rrr r=r>r(rArBrrrrrr"s     zReplaceDialog.do_findc Cs|jj}|sdS|j}y|jd}}|jd}Wntk rLd}YnX|sd|jd}}}tj|\}}|jd|d|d}|j||} |sdS|j | |j j} | dkrdS|j d||j | j r|j||| r|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*rrrr$s:      zReplaceDialog.do_replacecCsv|j}|jd||jddd|jd|||jddd||krR|jd|n|jd|||jd|jdS)Nrr,z1.0r-r.)r r7r2tag_addZseeZupdate_idletasks)rrrr rrrrs  zReplaceDialog.show_hitcCs tj|||jjddddS)Nr.z1.0r-)rr;r r2)rr#rrrr;s zReplaceDialog.close)N)N)N)N)r)N)__name__ __module__ __qualname__titleZiconrr rrrrr r+r!r"r$rr;rrrrr s    2 r c sddlm}m}mmddlm}||}|jdtt |j j ddd\}}|j d||dfd d }d d }||d d|_ |_ jjddjfdd} ||d| d} | jdS)Nr)ToplevelTextENDSEL)ButtonzTest ReplaceDialog+rz+%d+%dcSsdS)Nrrrrrr4sz)_replace_dialog..undo_block_startcSsdS)Nrrrrrr:sz(_replace_dialog..undo_block_stopZgray)Zinactiveselectbackgroundrz"This is a sample sTring Plus MORE.cs(jdtjddS)Nz1.0)rErr2r)rLrMr rr show_replacesz%_replace_dialog..show_replacer)r Zcommand)tkinterrJrKrLrMZ tkinter.ttkrNrImapintZgeometrysplitr4r:packrZ focus_set) parentrJrKrNZboxxyr4r:rQZbuttonr)rLrMr r_replace_dialogs"     rZ__main__)mainzidlelib.idle_test.test_replaceF) verbosityexit)run)r&rRrrZidlelib.searchbaserZidlelibrrr rZrFZunittestr\Zidlelib.idle_test.htestr`rrrrs   7