+
     Bia                         ^ 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	 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                     \        V 4       R # N)print)msgs   &r   
walk_errorr   +   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   )fnmatchospathjoin).0namedirpathpatterns   & r   	<genexpr>findfiles.<locals>.<genexpr>9   s:      7 )tW5 0BGGLL$// )s
   A(AN)r"   walkr   )folderr(   	recursive_	filenamesr'   s   &f&  @r   	findfilesr0   0   sI      "$!D7 )7 	7 	7 y "E	7s   3AA	AAc                   j   a a ] tR t^@t 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   r5   GrepDialog.__init__G   s.     	&
  &r   c                   \         P                  ! WV4       V'       d   VP                  ;'       g    R pMR p\        P                  P                  V4      w  rV\        P                  P                  V4      w  rxV'       g   RpV P                  P                  \        P                  P                  VRV,           4      4       R# ) z.py*N)
r   r   filenamer"   r#   splitsplitextr6   setr$   )	r8   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                    \         P                  ! V 4       V P                  R V P                  4      ^ ,          V n        R# )z	In files:N)r   create_entries
make_entryr6   globentr8   s   &r   rH   GrepDialog.create_entriesp   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_framer7   pack)r8   btns   & r   create_other_buttonsGrepDialog.create_other_buttonsu   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_commandrK   s   &r   rZ   !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   getprogr6   r   rO   bellidlelib.outwinr_   sysstdoutr   grep_it)r8   eventprogr#   r_   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sortedr0   r7   r   closer   getpatr   r   	enumeratesearchrc   rd   writeOSErrorAttributeError)r8   rg   r#   r,   filepatfilelistpathitsfnflinenoliner   s   &&&          r   re   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   rJ   r6   r7   r   )__name__
__module____qualname____firstlineno__titleiconneedwrapbuttonr5   r   rH   rV   rZ   r\   re   __static_attributes____classdictcell____classcell__)r9   __classdict__s   @@r   r   r   @   s@      #EDN'&8,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?   rT   insert)parentr   r   r   r   r   rO   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"   rc   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   