Fa@sddlZddlZddlZddlZddlmZmZmZddlmZm Z m Z m Z m Z ddl mZddlmZddddZGdd d eZd d Zed krddlZejd ddddddlmZeedS)N) StringVar BooleanVar Checkbutton)TkTextButtonSELEND) SearchEngine)SearchDialogBasecCsq|j}tj|}t|ds?t||||_|j}|jdd}|j|||dS)N _grepdialogz sel.firstzsel.last)Z_rootr gethasattr GrepDialogr open)textioflistrootengineZdialog searchphraser(/usr/lib/python3.5/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|\}}|smd}|jjtjj |d|dS)Nz.py*) r rfilenameospathsplitsplitextrsetjoin) rrrrr"dirbaseheadtailrrrr!szGrepDialog.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} xyt | dD]h\} } | d ddkr| dd } |j | rtjjd|| | f|d7}qWWdQRXWq}tk rP} zt | WYdd} ~ Xq}Xq}Wt |rhd|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}xd|D]\}tjj||} tjj| r|j| qet j ||re|j| qeW|rx*|D]"} |j |j | ||qW|S)N) r!listdircurdirrErAr"r&isdirappendfnmatchextendr>) rr'r(ZrecnamesrLrGZsubdirsnamerIZsubdirrrrr>ks"    zGrepDialog.findfilescCs'|jr#|jj|jjdS)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