
    .hha                         S SK r S SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  SS jrS rS r " S	 S
\	5      rS r\S:X  a  S SKJr  \" SSSS9  S SKJr  \" \5        gg)    N)	StringVar
BooleanVar)Checkbutton)SearchDialogBase)searchenginec                     U R                  5       n[        R                  " U5      n[        US5      (       d  [	        X4U5      Ul        UR
                  nU R                  SS5      nUR                  XU5        g )N_grepdialogz	sel.firstzsel.last)_rootr   gethasattr
GrepDialogr	   open)textioflistrootenginedialogsearchphrases          5/opt/python-3.13.8/usr/lib/python3.13/idlelib/grep.pygrepr      sd     ::<Dd#F6=))'e<F88K4L
KKB'    c                     [        U 5        g N)print)msgs    r   
walk_errorr   +   s	    	#Jr   c              #      ^^#    [         R                  " U [        S9 H$  u  mp4UU4S jU 5        S h  vN   U(       a  M$    g    g  N7f)N)onerrorc              3      >#    U  HC  n[         R                   " UT5      (       d  M!  [        R                  R                  TU5      v   ME     g 7fr   )fnmatchospathjoin).0namedirpathpatterns     r   	<genexpr>findfiles.<locals>.<genexpr>9   s:      7 )tW5 0BGGLL$// )s
    A'A)r"   walkr   )folderr(   	recursive_	filenamesr'   s    `   @r   	findfilesr0   0   sI      "$!D7 )7 	7 	7 y "E	7s   0A	A	A	A	c                   `   ^  \ rS rSrSrSrSrU 4S jrSS jrS r	S r
S	 rSS
 jrS rSrU =r$ )r   @   zFind in Files DialogGrepr   c                 p   > [         TU ]  X5        X0l        [        U5      U l        [        U5      U l        g r   )super__init__r   r   globvarr   recvar)selfr   r   r   	__class__s       r   r6   GrepDialog.__init__G   s.     	&
  &r   c                 ~   [         R                  " XU5        U(       a  UR                  =(       d    SnOSn[        R                  R                  U5      u  pV[        R                  R                  U5      u  pxU(       d  SnU R                  R                  [        R                  R                  USU-   5      5        g )N z.py*)
r   r   filenamer"   r#   splitsplitextr7   setr$   )	r9   r   r   r   r#   dirbaseheadtails	            r   r   GrepDialog.openZ   s     	d,7;;$"DDGGMM$'	WW%%d+
Dc3:67r   c                 x    [         R                  " U 5        U R                  SU R                  5      S   U l        g )Nz	In files:r   )r   create_entries
make_entryr7   globentr9   s    r   rI   GrepDialog.create_entriesp   s+    ''-{DLLA!Dr   c                 p    [        U R                  5       S   U R                  SS9nUR                  SSS9  g )Nr   zRecurse down subdirectories)variabler   topboth)sidefill)r   
make_framer8   pack)r9   btns     r   create_other_buttonsGrepDialog.create_other_buttonsu   s6    !!$t{{24 	e&)r   c                 f    [         R                  " U 5        U R                  SU R                  SS9  g )NzSearch FilesT)isdef)r   create_command_buttonsmake_buttondefault_commandrL   s    r   r[   !GrepDialog.create_command_buttons|   s+    //5)=)=TJr   c                 |   U R                   R                  5       nU(       d  g U R                  R                  5       nU(       d  U R                  R                  5         g SSKJn  [        R                  n U" U R                  5      [        l	        U R                  X#5        U[        l	        g ! U[        l	        f = f)Nr   )OutputWindow)r   getprogr7   r   rP   bellidlelib.outwinr`   sysstdoutr   grep_it)r9   eventprogr#   r`   saves         r   r]   GrepDialog.default_command   s}     {{""$||!HHMMO/zz	%djj1CJLL$CJCJs   6,B. .B;c                    [         R                  R                  U5      u  p4U(       d  [         R                  n[	        [        X4U R                  R                  5       5      5      nU R                  5         U R                  R                  5       n[        SU< SU S35        Sn U H  n [        USS9 n	[        U	S5       HX  u  pUSS  S	:X  a  US S nUR                  U5      (       d  M+  [        R                   R#                  U S
U
 S
U S	35        US-  nMZ     S S S 5        M     [        U(       a  SU S3OS5        g ! , (       d  f       M  = f! [$         a  n[        U5         S nAM  S nAff = f! [&         a     g f = f)Nz
Searching z in z ...r   replace)errors   
z: zHits found: z'
(Hint: right-click to open locations.)zNo hits.)r"   r#   r@   curdirsortedr0   r8   r   closer   getpatr   r   	enumeratesearchrd   re   writeOSErrorAttributeError)r9   rh   r#   r,   filepatfilelistpathitsfnflinenoliner   s                r   rf   GrepDialog.grep_it   s^    ''---YYF)FT[[__5FGH

kk  "
3'dV401		b3q,5aOLF#BCyD0'+CRy#{{400 #

 0 0B4r&D61L M $	 -< 43   !&NO)+ 43  #JJ  	 	sf   &E9 ,
E64E.1EE'E9 
E	EE9 E
E6 E1+E9 1E66E9 9
FF)r   rK   r7   r8   r   )__name__
__module____qualname____firstlineno__titleiconneedwrapbuttonr6   r   rI   rW   r[   r]   rf   __static_attributes____classcell__)r:   s   @r   r   r   @   s>     #EDN'&8,E
*K
.% %r   r   c                   ^^^ SSK JnJnJm  SSKJnJn  SSKJn  U" U 5      nUR                  S5        [        [        U R                  5       R                  S5      SS  5      u  pxUR                  SU SUS-    35        U" U5      mU" U5      n	U	R                  5         U" U	S	S
9mTR                  5         TR                  SS5        UUU4S jn
U" U	SU
S9nUR                  5         g )Nr   )ToplevelTextSEL)FrameButton)PyShellFileListzTest GrepDialog+rn         )height1.0zimport grepc                  f   > TR                  T SS5        [        TTS9  TR                  T SS5        g )Nr   z1.end)r   )tag_addr   
tag_remove)r   r   r   s   r   show_grep_dialog&_grep_dialog.<locals>.show_grep_dialog   s-    S%)TUG,r   zShow GrepDialog)r   command)tkinterr   r   r   tkinter.ttkr   r   idlelib.pyshellr   r   mapintgeometryr@   rU   insert)parentr   r   r   r   r   rP   xyframer   buttonr   r   r   s               @@@r   _grep_dialogr      s    ++)/
6
CII sFOO%++C045DALL1QCqS	"#C E#JE	JJLa DIIKKK}%-
 E 1;KLF
KKMr   __main__)mainzidlelib.idle_test.test_grep   F)	verbosityexit)run)NN)r!   r"   rd   r   r   r   r   r   idlelib.searchbaser   idlelibr   r   r   r0   r   r   r   unittestr   idlelib.idle_test.htestr    r   r   <module>r      sj     	 
 ) # /  (.
 }! }@4 z	&!%@+ r   