3 2aV@sddlZddlZddlZddlmZmZddlmZddlm Z ddl m Z dddZ Gdd d e Z d d Zed krdd lmZeddddddlmZeedS)N) StringVar BooleanVar) Checkbutton)SearchDialogBase) searchenginecCsN|j}tj|}t|ds*t||||_|j}|jdd}|j|||dS)N _grepdialogz sel.firstzsel.last)Z_rootrgethasattr GrepDialogropen)textioflistrootengineZdialog searchphraser)/opt/alt/python36/lib64/python3.6/grep.pygreps    rc@s\eZdZdZdZdZddZdddZd d Zd d Z d dZ dddZ ddZ ddZ dS)r zFind in Files DialogZGreprcCs,tj|||||_t||_t||_dS)N)r__init__rrglobvarrrecvar)selfrrrrrrr.s  zGrepDialog.__init__Nc Cshtj||||r|jpd}nd}tjj|\}}tjj|\}}|sJd}|jjtjj |d|dS)Nz.py*) rr filenameospathsplitsplitextrsetjoin) rr rr rdirbaseheadtailrrrr >s zGrepDialog.opencCs"tj||jd|jd|_dS)Nz In files:r)rcreate_entriesZ make_entryrZglobent)rrrrr&Ks zGrepDialog.create_entriescCs*t|jd|jdd}|jddddS)NrzRecurse down subdirectories)variabler topZboth)Zsidefill)rZ make_framerpack)rZbtnrrrcreate_other_buttonsPszGrepDialog.create_other_buttonscCstj||jd|jddS)Nz Search Files)rcreate_command_buttonsZ make_buttondefault_command)rrrrr-Ws z!GrepDialog.create_command_buttonsc Csj|jj}|sdS|jj}|s.|jjdSddlm}tj }z||j t_ |j ||Wd|t_ XdS)Nr) OutputWindow) rZgetprogrrr(ZbellZidlelib.outwinr/sysstdoutrgrep_it)rZeventprogrr/Zsaverrrr.\s     zGrepDialog.default_commandc CsNtjj|\}}|j|||jj}|j|j|jj }t d|d|dd}yx|D]}yt |ddj} xbt | dD]T\} } | d ddkr| dd} |j | rtjj|d | d | d|d7}qWWdQRXWq`tk r} zt | WYdd} ~ Xq`Xq`Wt |r*d |d nd Wntk rHYnXdS)Nz Searching z in z ...rreplace)errorsr, z: z Hits found: z' (Hint: right-click to open locations.)zNo hits.r7)rrr findfilesrrsortcloserZgetpatprintr enumeratesearchr0r1writeOSErrorAttributeError) rr3rr"r#listZpathitsfnflinenolinemsgrrrr2ss.    zGrepDialog.grep_itc Csytj|ptj}Wn(tk r<}z t|gSd}~XnXg}g}xH|D]@}tjj||} tjj| rv|j| qLt j ||rL|j| qLW|rx |D]} |j |j | ||qW|S)N) rlistdircurdirr?r;rr!isdirappendfnmatchextendr8) rr"r#ZrecnamesrGrAZsubdirsnamerCZsubdirrrrr8s"     zGrepDialog.findfiles)N)N)__name__ __module__ __qualname__titleZiconZneedwrapbuttonrr r&r+r-r.r2r8rrrrr 's  "r c sddlm}m}mmddlm}ddlm}||}|j dt t |j j ddd\}}|j d|d|d||||d d jfd d }||d |d} | jdS)Nr)ToplevelTextSELEND)Button)PyShellFileListzTest GrepDialog+r,)Zheightcs,jdtdjddS)Nz1.0)r)Ztag_addrZ tag_remover)rWrVrr rrshow_grep_dialogs z&_grep_dialog..show_grep_dialogzShow GrepDialog)r Zcommand)tkinterrTrUrVrW tkinter.ttkrXZidlelib.pyshellrYrSmapintZgeometryrr*) parentrTrUrXrYr(xyr]Zbuttonr)rWrVrr r _grep_dialogs     re__main__)mainzidlelib.idle_test.test_grepF) verbosityexit)run)NN)rLrr0r^rrr_rZidlelib.searchbaserZidlelibrrr rerPZunittestrgZidlelib.idle_test.htestrkrrrrs