+
   ^POS                       ^ RI t ^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht RR ltR tR tR	 t ! R
 R]	4      tR t]R8X  d"   ^ RIHt ]! R^RR7       ^ RIHt ]! ]4       R# R# )    N)	StringVar
BooleanVar)Checkbutton)SearchDialogBase)searchenginec                     V P                  4       p\        P                  ! V4      p\        VR 4      '       g   \	        W4V4      Vn        VP
                  pV P                  RR4      pVP                  WV4       R# )_grepdialogz	sel.firstzsel.lastN)_rootr   gethasattr
GrepDialogr	   open)textioflistrootenginedialogsearchphrases   &&&    #/usr/lib/python3.14/idlelib/grep.pygrepr      sd     ::<Dd#F6=))'e<F88K4L
KKB'    c                 &   \         P                  P                  V 4      w  r\         P                  P                  V4      p\         P                  P	                  V4      w  r4V'       g   R p\         P                  P                  VRV,           4      # )z.py*)ospathsplitabspathsplitextjoin)r   dirbaseheadtails   &    r   default_globr%   +   sa     d#IC
''//#
C!!$'JD77<<S4Z((r   c                     \        V 4       R # N)print)msgs   &r   
walk_errorr*   9   s	    	#Jr   c              #      aa"   \         P                  ! V \        R 7       F&  w  or4VV3R lV 4        Rj  xL
  V'       d   K%   R# 	  R#  L5i))onerrorc              3      <"   T FD  p\         P                   ! VS4      '       g   K"  \        P                  P                  SV4      x  KF  	  R # 5ir'   )fnmatchr   r   r    ).0namedirpathpatterns   & r   	<genexpr>findfiles.<locals>.<genexpr>G   s:      7 )tW5 0BGGLL$// )s
   A(AN)r   walkr*   )folderr2   	recursive_	filenamesr1   s   &f&  @r   	findfilesr:   >   sI      "$!D7 )7 	7 	7 y "E	7s   3AA	AAc                   j   a a ] tR t^Nt oRtRt^ tV 3R ltRR ltR t	R t
R tRR ltR	 tR
tVtV ;t# )r   zFind in Files DialogGrepc                r   < \         SV `  W4       W0n        \        V4      V n        \        V4      V n        R # r'   )super__init__r   r   globvarr   recvar)selfr   r   r   	__class__s   &&&&r   r?   GrepDialog.__init__U   s.     	&
  &r   c                    \         P                  ! WV4       V'       d   VP                  ;'       g    R pMR pV P                  P	                  \        V4      4       R# ) N)r   r   filenamer@   setr%   )rB   r   r   r   r   s   &&&& r   r   GrepDialog.openh   sD     	d,7;;$$"DDd+,r   c                    \         P                  ! V 4       V P                  R V P                  4      ^ ,          V n        R# )z	In files:N)r   create_entries
make_entryr@   globentrB   s   &r   rK   GrepDialog.create_entriesz   s+    ''-{DLLA!Dr   c                    \        V P                  4       ^ ,          V P                  RR7      pVP                  RRR7       R# )r   zRecurse down subdirectories)variabler   topboth)sidefillN)r   
make_framerA   pack)rB   btns   & r   create_other_buttonsGrepDialog.create_other_buttons   s6    !!$t{{24 	e&)r   c                n    \         P                  ! V 4       V P                  R V P                  RR7       R# )zSearch FilesT)isdefN)r   create_command_buttonsmake_buttondefault_commandrN   s   &r   r]   !GrepDialog.create_command_buttons   s+    //5)=)=TJr   c                   V P                   P                  4       pV'       g   R # V P                  P                  4       pV'       g   V P                  P                  4        R # ^ RIHp \        P                  p V! V P                  4      \        n	        V P                  W#4       V\        n	        R #   T\        n	        i ; i)N)OutputWindow)r   getprogr@   r   rR   bellidlelib.outwinrb   sysstdoutr   grep_it)rB   eventprogr   rb   saves   &&    r   r_   GrepDialog.default_command   s}     {{""$||!HHMMO/zz	%djj1CJLL$CJCJs   :,B3 3C c                D   \         P                  P                  V4      w  r4V'       g   \         P                  p\	        \        W4V P                  P                  4       4      4      pV P                  4        V P                  P                  4       p\        R V: RV R24       ^ p V F  p \        VRR7      ;_uu_ 4       p	\        V	^4       F^  w  rVRR R8X  d   VRR pVP                  V4      '       g   K-  \        P                   P#                  V RV
 RV R24       V^,          pK`  	  RRR4       K  	  \        V'       d   RV R	2MR
4       R#   + '       g   i     K  ; i  \$         d   p\        T4        Rp?K  Rp?ii ; i  \&         d     R# i ; i)z
Searching z in z ...replace)errorsN
z: zHits found: z'
(Hint: right-click to open locations.)zNo hits.)r   r   r   curdirsortedr:   rA   r   closer   getpatr(   r   	enumeratesearchrf   rg   writeOSErrorAttributeError)rB   rj   r   r6   filepatfilelistpathitsfnflinenoliner)   s   &&&          r   rh   GrepDialog.grep_it   sd    ''---YYF)FT[[__5FGH

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

 0 0B4r&D61L M $	 -< 43   !&NO)+ 433  #JJ  	 	sf   'F -E,5E<5E1E,9F E)#E,'F )E,,F7FF FF FF)r   rM   r@   rA   r'   )__name__
__module____qualname____firstlineno__titleiconneedwrapbuttonr?   r   rK   rY   r]   r_   rh   __static_attributes____classdictcell____classcell__)rC   __classdict__s   @@r   r   r   N   s@      #EDN'&-$E
*K
.% %r   r   c                   aaa ^ RI HpHpHo ^ RIHpHp ^ RIHp V! V 4      pVP                  R4       \        \        V P                  4       P                  R4      R,          4      w  rxVP                  RV RV^,            24       V! V4      oV! V4      p	V	P                  4        V! V	^R7      oSP                  4        SP                  RR	4       VVV3R
 lp
V! V	RV
R7      pVP                  4        R# )r   )ToplevelTextSEL)FrameButton)PyShellFileListzTest GrepDialog+:   NN)height1.0zimport grepc                  n   < SP                  S R R4       \        SSR7       SP                  S R R4       R# )r   z1.end)r   N)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   commandN)tkinterr   r   r   tkinter.ttkr   r   idlelib.pyshellr   r   mapintgeometryr   rW   insert)parentr   r   r   r   r   rR   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_grepF)	verbosityexit)run)NN)r.   r   rf   r   r   r   r   r   idlelib.searchbaser   idlelibr   r   r%   r*   r:   r   r   r   unittestr   idlelib.idle_test.htestr    r   r   <module>r      so     	 
 ) # /  (.)
 y! yx4 z	&!%@+ r   