
    .hh!                     0   S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  SqSrS rSS	 jr " S
 S5      r " S S\	5      r " S S\	5      rS r\S:X  a3  \" \R2                  5      S:X  a  S SKJr  \" SSSS9  S SKJr  \" \5        gg)    N)idleConf)pyshell)TreeNodeTreeItemScrolledCanvas)py_extensions)ListedToplevel)z.pyic                     [         R                  R                  U 5      u  p[         R                  R                  U5      nU[        ;   =(       a	    U[
        ;  $ N)ospathsplitextnormcaser   browseable_extension_blocklist)r   _exts      8/opt/python-3.13.8/usr/lib/python3.13/idlelib/browser.pyis_browseable_extensionr      sB    WWd#FA
''

3
C-MC/M$MM    c                 @   / nU R                  5        GH  u  p4Ub  UR                  U:X  d  M  [        US5      (       a  UR                  (       a  UR                  U:X  a  / nUR                   Hc  n[        U[        5      (       a  UnO7UR                  nUR                  UR                  :w  a  UR                   SU 3nUR                  U5        Me     U=R                  SR                  SR                  U5      5      -  sl        UR                  U5        GM	     U$ )Nsuper.z({})z, )
itemsmodulehasattrr   name
isinstancestrappendformatjoin)
child_dictmodnameobskeyobjsuperssupsnames           r   transform_childrenr*   #   s     C$$&?cjjG3sG$$sxx399C!#s++ # #::3'*zzl!E7$;EMM%( % FMM$))F*;<<JJsO ' Jr   c                   @    \ rS rSrSSS.S jrSS jrS rS rS	 rS
r	g)ModuleBrowserC   F)_htest_utestc                T    Xl         X l        X0l        X@l        U R	                  5         g r   )masterr   r.   r/   init)selfr1   r   r.   r/   s        r   __init__ModuleBrowser.__init__J   s!    $ 			r   Nc                 l    U R                   R                  5         U R                  R                  5         g r   )topdestroynode)r3   events     r   closeModuleBrowser.closeb   s"    		r   c                    U R                   nU R                  (       d!  U R                  (       d  [        R                  O[        R
                  " U5      nUR                  q[        R                  R                  5         [        U5      =U l        nUR                  SU R                  5        UR                  SU R                  5        U R                  (       a5  UR!                  SUR#                  5       UR%                  5       S-   4-  5        U R'                  5         UR)                  5         [*        R,                  " 5       n[*        R.                  " US5      S   n[1        X5SSS	9nUR2                  R5                  SS
S9  U R7                  5       n[9        UR:                  S U5      =U l        nU R                  (       d!  UR?                  5         URA                  5         g g )NWM_DELETE_WINDOWz<Escape>z+%d+%d   normal
backgroundr      )bghighlightthickness	takefocusboth)expandfill)!r1   r.   r/   r   flistPyShellFileListopen	file_openpyclbr_modulesclearr	   r7   protocolr;   bindgeometrywinfo_rootxwinfo_rootysettitle	focus_setr   CurrentThemeGetHighlightr   framepackrootnoder   canvasr9   updaterG   )	r3   rootrI   r7   themerA   scitemr9   s	            r   r2   ModuleBrowser.initg   s^    {{'+{{dkk--d3 	JJ	 (--3'4TZZ(;;LL!!#T%5%5%7#%=>? @ %%'**5(;LI
C1&')
QV,}}#BIItT::	D{{KKMKKM r   c                     U R                   R                  S[        R                  R	                  U R                  5      -   5        U R                   R                  S5        g )NzModule Browser - zModule Browser)r7   wm_titler   r   basenamewm_iconnamer3   s    r   rU   ModuleBrowser.settitle   s@    -0@0@0KKL-.r   c                 ,    [        U R                  5      $ r   )ModuleBrowserTreeItemr   rg   s    r   r[   ModuleBrowser.rootnode   s    $TYY//r   )r.   r/   r1   r9   r   r7   r   )
__name__
__module____qualname____firstlineno__r4   r;   r2   rU   r[   __static_attributes__ r   r   r,   r,   C   s"     05U 0
>/
0r   r,   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)rj      c                     Xl         g r   file)r3   rv   s     r   r4   ModuleBrowserTreeItem.__init__   s	     	r   c                 T    [         R                  R                  U R                  5      $ r   )r   r   re   rv   rg   s    r   GetTextModuleBrowserTreeItem.GetText   s    ww		**r   c                     g)Npythonrq   rg   s    r   GetIconName!ModuleBrowserTreeItem.GetIconName   s    r   c                 `    U R                  5        Vs/ s H  n[        U5      PM     sn$ s  snf r   )listchildrenChildBrowserTreeItemr3   r&   s     r   
GetSubList ModuleBrowserTreeItem.GetSubList   s+    595F5F5HI5Hc$S)5HIIIs   +c                     [        U R                  5      (       d  g [        R                  R	                  U R                  5      (       d  g [        U R                  5        g r   )r   rv   r   r   existsrL   rg   s    r   OnDoubleClick#ModuleBrowserTreeItem.OnDoubleClick   s:    &tyy11ww~~dii(($))r   c                 ,    [        U R                  5      $ r   )r   rv   rg   s    r   IsExpandable"ModuleBrowserTreeItem.IsExpandable   s    &tyy11r   c                 ^   [        U R                  5      (       d  / $ [        R                  R	                  U R                  5      u  p[        R                  R                  U5      u  p4 [        R                  " X1/[        R                  -   5      n[        XS5      $ ! [         a    / s $ f = fr   )r   rv   r   r   splitr   rM   readmodule_exsysImportErrorr*   )r3   dirbaser   r   trees         r   r   "ModuleBrowserTreeItem.listchildren   s    &tyy11IGGMM$)),	''""4(	''echh.>?D "$--  	I	s   *(B B,+B,ru   N)rl   rm   rn   ro   r4   ry   r}   r   r   r   r   rp   rq   r   r   rj   rj      s&    +J2
.r   rj   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
r      c                 p    Xl         UR                  U l        [        U[        R                  5      U l        g r   )r&   r   r   rM   Function
isfunctionr   s     r   r4   ChildBrowserTreeItem.__init__   s$    HH	$S&//:r   c                 V    U R                   nU R                  (       a  SU-   S-   $ SU-   $ )Nzdef z(...)zclass )r   r   )r3   r   s     r   ry   ChildBrowserTreeItem.GetText   s+    yy??D=7**d?"r   c                 (    U R                   (       a  gg)Nr|   folder)r   rg   s    r   r}    ChildBrowserTreeItem.GetIconName   s    ??r   c                 4    U R                   R                  0 :g  $ r   )r&   childrenrg   s    r   r   !ChildBrowserTreeItem.IsExpandable   s    xx  B&&r   c                 ~    [        U R                  R                  5       Vs/ s H  n[        U5      PM     sn$ s  snf r   )r*   r&   r   r   r   s     r   r   ChildBrowserTreeItem.GetSubList   sA     .dhh.?.?@B@C %S)@B 	B Bs   :c                      [        U R                  R                  5      nUR                  U R                  R                  5        g ! [
        [        4 a     g f = fr   )rL   r&   rv   gotolinelinenoOSErrorAttributeError)r3   edits     r   r   "ChildBrowserTreeItem.OnDoubleClick   sD    	TXX]]+DMM$((//*( 		s   AA AA)r   r   r&   N)rl   rm   rn   ro   r4   ry   r}   r   r   r   rp   rq   r   r   r   r      s!    ;#'B
r   r   c                     [        [        R                  5      S:  a  [        R                  S   nO[        n " S S[        5      nS n[        XSS9  g )NrB   c                       \ rS rSrS rSrg)'_module_browser.<locals>.Nested_in_func   c                      g r   rq   rq   r   r   nested_in_class7_module_browser.<locals>.Nested_in_func.nested_in_class   s    4r   rq   N)rl   rm   rn   ro   r   rp   rq   r   r   Nested_in_funcr      s    'r   r   c                       " S S5      n g )Nc                       \ rS rSrSrg);_module_browser.<locals>.closure.<locals>.Nested_in_closure   rq   N)rl   rm   rn   ro   rp   rq   r   r   Nested_in_closurer      s    Tr   r   rq   )r   s    r   closure _module_browser.<locals>.closure   s    ))r   T)r.   )lenr   argv__file__r   r,   )parentrv   r   r   s       r   _module_browserr      s?    
388}qxx{	(X 	(	*&t,r   __main__rB   )mainzidlelib.idle_test.test_browser   F)	verbosityexit)runr   )r   rM   r   idlelib.configr   idlelibr   idlelib.treer   r   r   idlelib.utilr   idlelib.windowr	   rL   r   r   r*   r,   rj   r   r   rl   r   r   unittestr   idlelib.idle_test.htestr   rq   r   r   <module>r      s    
  
 #  ; ; & ) 	 "+ N@J0 J0Z1.H 1.h*8 *Z
- z
388}!-G+ r   