f f@sddlZddlZddlZddlZddlmZmZmZddlmZm Z m Z m Z m Z ddl mZddlmZddddZGdd d eZd d Zed krddlZejd ddddddlmZeendS)N) StringVar BooleanVar Checkbutton)TkTextButtonSELEND) SearchEngine)SearchDialogBasecCst|j}tj|}t|dsBt||||_n|j}|jdd}|j|||dS)N _grepdialogz sel.firstzsel.last)Z_rootr gethasattr GrepDialogr open)textioflistrootengineZdialog searchphraser7/opt/alt/python34/lib64/python3.4/idlelib/GrepDialog.pygrep s  rc@seZdZdZdZdZddZdddZd d Zd d Z d dZ dddZ ddZ ddZ dddZdS)rzFind in Files DialogZGreprcCs>tj|||||_t||_t||_dS)N)r __init__rrglobvarrrecvar)selfrrrrrrrs zGrepDialog.__init__Nc Cstj||||r+|jp%d}nd}tjj|\}}tjj|\}}|spd}n|jjtjj |d|dS)Nz.py*) r rfilenameospathsplitsplitextrsetjoin) rrrrr"dirbaseheadtailrrrr!s zGrepDialog.opencCs-tj||jd|jd|_dS)Nz In files:r)r create_entriesZ make_entryrZglobent)rrrrr+-s zGrepDialog.create_entriescCsU|jd}t|ddd|jdd}|jddd d |jdS) NrZanchorwZvariablerzRecurse down subdirectoriesZsidetopZfillZboth)Z make_framerrpackZselect)rfZbtnrrrcreate_other_buttons1s   zGrepDialog.create_other_buttonscCs'tj||jd|jddS)Nz Search Files)r create_command_buttonsZ make_buttondefault_command)rrrrr2:s z!GrepDialog.create_command_buttonsc Cs|jj}|sdS|jj}|s?|jjdSddlm}tj }z&||j t_ |j ||Wd|t_ XdS)Nr) OutputWindow) rZgetprogrr r-ZbellZidlelib.OutputWindowr4sysstdoutrgrep_it)reventprogr"r4Zsaverrrr3>s  zGrepDialog.default_commandc Cstjj|\}}|j|||jj}|j|j|jj }t d||fd}yx|D]}yt |dd} xt | dD]n\} } | d ddkr| dd } n|j | rtjjd|| | f|d7}qqWWdQXWq}tk rU} zt | WYdd} ~ Xq}Xq}Wt |rmd|nd Wntk rYnXdS) NzSearching %r in %s ...rerrorsreplacer1 z %s: %s: %s z5Hits found: %s (Hint: right-click to open locations.)zNo hits.r=)r!r"r# findfilesrr sortcloserZgetpatprintr enumeratesearchr5r6writeOSErrorAttributeError) rr9r"r'r(listZpathitsfnr/linenolinemsgrrrr7Ns0    ! zGrepDialog.grep_itc Csytj|ptj}Wn3tk rQ}zt|gSWYdd}~XnXg}g}xg|D]_}tjj||} tjj| r|j| qet j ||re|j| qeqeW|rx-|D]"} |j |j | ||qWn|S)N) r!listdircurdirrErAr"r&isdirappendfnmatchextendr>) rr'r(ZrecnamesrLrGZsubdirsnamerIZsubdirrrrr>ks"   #zGrepDialog.findfilescCs*|jr&|jj|jjndS)N)r-Z grab_releaseZwithdraw)rr8rrrr@s  zGrepDialog.close)__name__ __module__ __qualname__titleZiconZneedwrapbuttonrrr+r0r2r3r7r>r@rrrrrs      rc sddlm}t}|jdttttjd|j \}}}}|j d||df||t |ddj fd d }t |d d d |}|j |j dS)Nr)PyShellFileListzTest GrepDialogz[x+]z+%d+%dheightcs:jtdttdjtdtdS)Nz1.0r)Ztag_addrr rZ tag_remover)rrrrshow_grep_dialogsz&_grep_dialog..show_grep_dialogrzShow GrepDialogZcommand)Zidlelib.PyShellrYrrXrGmapintrer#Zgeometryrr.rZmainloop) parentrYrwidthr[xyr]Zbuttonr)rrr _grep_dialogs  3   re__main__zidlelib.idle_test.test_grep verbosityexitF)run)r!rQr`r5Ztkinterrrrrrrrr Zidlelibr Zidlelib.SearchDialogBaser rrrerUZunittestmainZidlelib.idle_test.htestrjrrrrs    ( p