
    z%i!                     2   	 d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ dadZd Zdd	Z G d
 d      Z G d de	      Z G d de	      Zd Zedk(  r5 eej2                        dk(  rd dlmZ  eddd       d dlmZ  ee       yy)    N)idleConf)pyshell)TreeNodeTreeItemScrolledCanvas)py_extensions)ListedToplevel)z.pyic                     t         j                  j                  |       \  }}t         j                  j                  |      }|t        v xr |t
        vS N)ospathsplitextnormcaser   browseable_extension_blocklist)r   _exts      C/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/browser.pyis_browseable_extensionr      sD    WWd#FAs
''

3
C-MC/M$MM    c                    	 g }| j                         D ]  \  }}||j                  |k(  st        |d      r|j                  r|j                  |k(  rg }|j                  D ]\  }t        |t              r|}n6|j                  }|j                  |j                  k7  r|j                   d| }|j                  |       ^ |xj                  dj                  dj                  |            z  c_        |j                  |        |S )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$$& S?cjjG3sG$sxx399 )C!#s+ # #::3'*zzl!E7$;EMM%() FMM$))F*;<<JJsO Jr   c                   6    e Zd Z	 ddddZd	dZd Zd Zd Zy)
ModuleBrowserF)_htest_utestc                ^    	 || _         || _        || _        || _        | j	                          y r   )masterr   r-   r.   init)selfr0   r   r-   r.   s        r   __init__zModuleBrowser.__init__J   s.    	" 			r   Nc                 n    	 | j                   j                          | j                  j                          y r   )topdestroynode)r2   events     r   closezModuleBrowser.closeb   s%    0		r   c                    	 | j                   }| j                  s| j                  st        j                  nt        j
                  |      }|j                  at        j                  j                          t        |      x| _        }|j                  d| j                         |j                  d| j                         | j                  r5|j!                  d|j#                         |j%                         dz   fz         | j'                          |j)                          t+        j,                         }t+        j.                  |d      d   }t1        ||dd	      }|j2                  j5                  dd
       | j7                         }t9        |j:                  d |      x| _        }| j                  s!|j?                          |jA                          y y )NWM_DELETE_WINDOWz<Escape>z+%d+%d   normal
backgroundr      )bghighlightthickness	takefocusboth)expandfill)!r0   r-   r.   r   flistPyShellFileListopen	file_openpyclbr_modulesclearr	   r5   protocolr9   bindgeometrywinfo_rootxwinfo_rootysettitle	focus_setr   CurrentThemeGetHighlightr   framepackrootnoder   canvasr7   updaterD   )	r2   rootrF   r5   themer>   scitemr7   s	            r   r1   zModuleBrowser.initg   sa   ={{'+{{dkk--d3 	JJ	 (--3'4TZZ(;;LL!!#T%5%5%7#%=>? @ %%'**5(;LI
CJ1&')
QV,}}#BIItT::	D{{KKMKKM r   c                     	 | j                   j                  dt        j                  j	                  | j                        z          | j                   j                  d       y )NzModule Browser - zModule Browser)r5   wm_titler   r   basenamewm_iconnamer2   s    r   rR   zModuleBrowser.settitle   sC    -0@0@0KKL-.r   c                 .    	 t        | j                        S r   )ModuleBrowserTreeItemr   rc   s    r   rX   zModuleBrowser.rootnode   s    A$TYY//r   r   )__name__
__module____qualname__r3   r9   r1   rR   rX    r   r   r,   r,   C   s'     05U 0
>/
0r   r,   c                   8    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	y)	re   c                     	 || _         y r   )file)r2   rl   s     r   r3   zModuleBrowserTreeItem.__init__   s    	
 	r   c                 V    	 t         j                  j                  | j                        S r   )r   r   ra   rl   rc   s    r   GetTextzModuleBrowserTreeItem.GetText   s    ?ww		**r   c                      	 y)Npythonri   rc   s    r   GetIconNamez!ModuleBrowserTreeItem.GetIconName   s    1r   c                 \    	 | j                         D cg c]  }t        |       c}S c c}w r   )listchildrenChildBrowserTreeItemr2   r&   s     r   
GetSubListz ModuleBrowserTreeItem.GetSubList   s(    4595F5F5HIc$S)IIIs   )c                     	 t        | j                        sy t        j                  j	                  | j                        sy t        | j                         y r   )r   rl   r   r   existsrI   rc   s    r   OnDoubleClickz#ModuleBrowserTreeItem.OnDoubleClick   s7    @&tyy1ww~~dii($))r   c                 .    	 t        | j                        S r   )r   rl   rc   s    r   IsExpandablez"ModuleBrowserTreeItem.IsExpandable   s    %&tyy11r   c                 Z   	 t        | j                        sg S t        j                  j	                  | j                        \  }}t        j                  j                  |      \  }}	 t        j                  ||gt        j                  z         }t        ||      S # t        $ r g cY S w xY wr   )r   rl   r   r   splitr   rJ   readmodule_exsysImportErrorr*   )r2   dirbaser   r   trees         r   rs   z"ModuleBrowserTreeItem.listchildren   s    ?&tyy1IGGMM$)),	T''""4(a	''sechh.>?D "$--  	I	s   ((B B*)B*N)
rf   rg   rh   r3   rn   rq   rv   ry   r{   rs   ri   r   r   re   re      s+    +J2
.r   re   c                   2    e Zd Z	 d Zd Zd Zd Zd Zd Zy)rt   c                 t    	 || _         |j                  | _        t        |t        j                        | _        y r   )r&   r   r   rJ   Function
isfunctionru   s     r   r3   zChildBrowserTreeItem.__init__   s)    ?HH	$S&//:r   c                 N    	 | j                   }| j                  rd|z   dz   S d|z   S )Nzdef z(...)zclass )r   r   )r2   r   s     r   rn   zChildBrowserTreeItem.GetText   s.    ;yy??D=7**d?"r   c                      	 | j                   ryy)Nrp   folder)r   rc   s    r   rq   z ChildBrowserTreeItem.GetIconName   s    1??r   c                 6    	 | j                   j                  i k7  S r   )r&   childrenrc   s    r   r{   z!ChildBrowserTreeItem.IsExpandable   s    5xx  B&&r   c                 z    	 t        | j                  j                        D cg c]  }t        |       c}S c c}w r   )r*   r&   r   rt   ru   s     r   rv   zChildBrowserTreeItem.GetSubList   s=    4-dhh.?.?@B %S) B 	B Bs   8c                     	 	 t        | j                  j                        }|j                  | j                  j                         y # t
        t        f$ r Y y w xY wr   )rI   r&   rl   gotolinelinenoOSErrorAttributeError)r2   edits     r   ry   z"ChildBrowserTreeItem.OnDoubleClick   sG    <	TXX]]+DMM$((//*( 		s   AA AAN)	rf   rg   rh   r3   rn   rq   r{   rv   ry   ri   r   r   rt   rt      s&    
;#'B
r   rt   c                     t        t        j                        dkD  rt        j                  d   }nt        } G d dt              }d }t        | |d       y )Nr?   c                       e Zd Zd Zy)'_module_browser.<locals>.Nested_in_funcc                       y r   ri   ri   r   r   nested_in_classz7_module_browser.<locals>.Nested_in_func.nested_in_class   s    r   N)rf   rg   rh   r   ri   r   r   Nested_in_funcr      s    'r   r   c                       G d d      } y )Nc                       e Zd Zy);_module_browser.<locals>.closure.<locals>.Nested_in_closureN)rf   rg   rh   ri   r   r   Nested_in_closurer      s    r   r   ri   )r   s    r   closurez _module_browser.<locals>.closure   s    ))r   T)r-   )lenr   argv__file__r   r,   )parentrl   r   r   s       r   _module_browserr      sA    
388}qxx{	(X 	(	*&$t,r   __main__r?   )mainzidlelib.idle_test.test_browser   F)	verbosityexit)runr   )r   rJ   r   idlelib.configr   idlelibr   idlelib.treer   r   r   idlelib.utilr   idlelib.windowr	   rI   r   r   r*   r,   re   rt   r   rf   r   r   unittestr   idlelib.idle_test.htestr   ri   r   r   <module>r      s    
  
 #  ; ; & ) 	 "+ N@J0 J0Z1.H 1.h*8 *Z
- z
388}!-G+ r   