<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
2aV                 @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ dddZG dd	 d	e	Zd
d Zedkrd dlmZ edddd d dlmZ ee dS )    N)	StringVar
BooleanVar)Checkbutton)SearchDialogBase)searchenginec             C   sN   | j  }tj|}t|ds*t||||_|j}| jdd}|j| || d S )N_grepdialogz	sel.firstzsel.last)Z_rootr   gethasattr
GrepDialogr   open)textioflistrootengineZdialogsearchphrase r   )/opt/alt/python36/lib64/python3.6/grep.pygrep   s    


r   c               @   s\   e Zd ZdZdZdZdd ZdddZd	d
 Zdd Z	dd Z
dddZdd Zdd ZdS )r
   zFind in Files DialogZGrepr   c             C   s,   t j| || || _t|| _t|| _d S )N)r   __init__r   r   globvarr   recvar)selfr   r   r   r   r   r   r   .   s    
zGrepDialog.__init__Nc       	      C   sh   t j| || |r|jpd}nd}tjj|\}}tjj|\}}|sJd}| jjtjj	|d|  d S )N z.py*)
r   r   filenameospathsplitsplitextr   setjoin)	r   r   r   r   r   dirbaseheadtailr   r   r   r   >   s    zGrepDialog.openc             C   s"   t j|  | jd| jd | _d S )Nz	In files:r   )r   create_entriesZ
make_entryr   Zglobent)r   r   r   r   r&   K   s    
zGrepDialog.create_entriesc             C   s*   t | j d | jdd}|jddd d S )Nr   zRecurse down subdirectories)variabler   topZboth)Zsidefill)r   Z
make_framer   pack)r   Zbtnr   r   r   create_other_buttonsP   s    zGrepDialog.create_other_buttonsc             C   s   t j|  | jd| jd d S )NzSearch Files   )r   create_command_buttonsZmake_buttondefault_command)r   r   r   r   r-   W   s    
z!GrepDialog.create_command_buttonsc             C   sj   | j j }|sd S | jj }|s.| jj  d S ddlm} tj	}z|| j
t_	| j|| W d |t_	X d S )Nr   )OutputWindow)r   Zgetprogr   r   r(   ZbellZidlelib.outwinr/   sysstdoutr   grep_it)r   Zeventprogr   r/   Zsaver   r   r   r.   \   s    


zGrepDialog.default_commandc             C   sN  t jj|\}}| j||| jj }|j  | j  | jj	 }t
d|d| d d}yx|D ]}yt|ddj}	xbt|	dD ]T\}
}|dd  dkr|d d }|j|rtjj| d	|
 d	| d |d7 }qW W d Q R X W q` tk
r } zt
| W Y d d }~X q`X q`W t
|r*d
| dnd W n tk
rH   Y nX d S )Nz
Searching z in z ...r   replace)errorsr,   
z: zHits found: z'
(Hint: right-click to open locations.)zNo hits.r7   )r   r   r   	findfilesr   r   sortcloser   Zgetpatprintr   	enumeratesearchr0   r1   writeOSErrorAttributeError)r   r3   r   r"   r#   listZpathitsfnflinenolinemsgr   r   r   r2   s   s.    


zGrepDialog.grep_itc             C   s   yt j|pt j}W n( tk
r< } zt| g S d }~X nX g }g }xH|D ]@}t jj||}	t jj|	rv|j|	 qLt	j	||rL|j|	 qLW |rx |D ]}
|j
| j|
|| qW |S )N)r   listdircurdirr?   r;   r   r!   isdirappendfnmatchextendr8   )r   r"   r#   ZrecnamesrG   rA   ZsubdirsnamerC   Zsubdirr   r   r   r8      s"    

zGrepDialog.findfiles)N)N)__name__
__module____qualname__titleZiconZneedwrapbuttonr   r   r&   r+   r-   r.   r2   r8   r   r   r   r   r
   '   s   

"r
   c       
         s   ddl m}m}mm  ddlm} ddlm} || }|j	d t
t| j jddd  \}}|jd| d|d   ||||d	d
j   fdd}||d|d}	|	j  d S )Nr   )ToplevelTextSELEND)Button)PyShellFileListzTest GrepDialog+r,         )Zheightc                  s,   j d  td jd  d S )Nz1.0)r   )Ztag_addr   Z
tag_remover   )rW   rV   r   r   r   r   show_grep_dialog   s    z&_grep_dialog.<locals>.show_grep_dialogzShow GrepDialog)r   Zcommand)tkinterrT   rU   rV   rW   tkinter.ttkrX   Zidlelib.pyshellrY   rS   mapintZgeometryr   r*   )
parentrT   rU   rX   rY   r(   xyr]   Zbuttonr   )rW   rV   r   r   r   _grep_dialog   s    
 re   __main__)mainzidlelib.idle_test.test_grep   F)	verbosityexit)run)NN)rL   r   r0   r^   r   r   r_   r   Zidlelib.searchbaser   Zidlelibr   r   r
   re   rP   Zunittestrg   Zidlelib.idle_test.htestrk   r   r   r   r   <module>   s   
 