
    ;e!                     T   	 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    r; eej                  dk    rd dlmZ  eddd           d dlmZ  ee           dS dS )    N)idleConf)pyshell)TreeNodeTreeItemScrolledCanvas)py_extensions)ListedToplevel)z.pyic                     t           j                            |           \  }}t           j                            |          }|t          v o|t
          vS N)ospathsplitextnormcaser   browseable_extension_blocklist)r   _exts      &/usr/lib/python3.11/idlelib/browser.pyis_browseable_extensionr      sF    Wd##FAs
'

3

C-MC/M$MM    c                    	 g }|                                  D ]\  }}||j        |k    rt          |d          r|j        r|j        |k    rg }|j        D ]R}t          |t                    r|}n#|j        }|j        |j        k    r|j         d| }|                    |           S|xj        d                    d	                    |                    z  c_        |                    |           |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?cjG33sG$$ = =sx39 ) )C!#s++ < # #:33'*z$;$;E$;$;EMM%((((FMM$))F*;*;<<<JJsOOOJr   c                   8    e Zd Z	 ddddZd	dZd Zd Zd ZdS )
ModuleBrowserF)_htest_utestc                h    	 || _         || _        || _        || _        |                                  d S r   )masterr   r-   r.   init)selfr0   r   r-   r.   s        r   __init__zModuleBrowser.__init__J   s6    	" 			r   Nc                 l    	 | j                                          | j                                         d S r   )topdestroynode)r2   events     r   closezModuleBrowser.closeb   s3    0	r   c                    	 | j         }| j        s| j        st          j        nt          j        |          }|j        at          j	        
                                 t          |          x| _        }|                    d| j                   |                    d| j                   | j        rA|                    d|                                |                                dz   fz             |                                  |                                 t+          j                    }t+          j        |d          d         }t1          ||dd	          }|j                            dd
           |                                 }t9          |j        d |          x| _        }| j        s*|                                 |                                  d S d S )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   s   ={'+{ 4dk 4-d33 	J	 (---3'444TZ(((; 	@LL!!##T%5%5%7%7#%=>? @ @ @ %''*5(;;LI
CJ1&') ) )
QV,,,}}#BItT:::	D{ 	KKMMMKKMMMMM	 	r   c                     	 | j                             dt          j                            | j                  z              | j                             d           d S )NzModule Browser - zModule Browser)r5   wm_titler   r   basenamewm_iconnamer2   s    r   rR   zModuleBrowser.settitle   sP    -0@0@0K0KKLLL-.....r   c                 ,    	 t          | j                  S r   )ModuleBrowserTreeItemr   rc   s    r   rX   zModuleBrowser.rootnode   s    A$TY///r   r   )__name__
__module____qualname__r3   r9   r1   rR   rX    r   r   r,   r,   C   sz         05U     0   
  >/ / /
0 0 0 0 0r   r,   c                   :    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	dS )	re   c                     	 || _         d S r   )file)r2   rl   s     r   r3   zModuleBrowserTreeItem.__init__   s    	
 			r   c                 L    	 t           j                            | j                  S r   )r   r   ra   rl   rc   s    r   GetTextzModuleBrowserTreeItem.GetText   s    ?w	***r   c                     	 dS )Npythonri   rc   s    r   GetIconNamez!ModuleBrowserTreeItem.GetIconName   s
    1xr   c                 @    	 d |                                  D             S )Nc                 ,    g | ]}t          |          S ri   ChildBrowserTreeItem.0r&   s     r   
<listcomp>z4ModuleBrowserTreeItem.GetSubList.<locals>.<listcomp>   s!    IIIc$S))IIIr   )listchildrenrc   s    r   
GetSubListz ModuleBrowserTreeItem.GetSubList   s%    4IIT5F5F5H5HIIIIr   c                     	 t          | j                  sd S t          j                            | j                  sd S t          | j                   d S r   )r   rl   r   r   existsrI   rc   s    r   OnDoubleClickz#ModuleBrowserTreeItem.OnDoubleClick   sO    @&ty11 	Fw~~di(( 	F$)r   c                 ,    	 t          | j                  S r   )r   rl   rc   s    r   IsExpandablez"ModuleBrowserTreeItem.IsExpandable   s    %&ty111r   c                 P   	 t          | j                  sg S t          j                            | j                  \  }}t          j                            |          \  }}	 t          j        ||gt          j        z             }n# t          $ r g cY S w xY wt          ||          S r   )r   rl   r   r   splitr   rJ   readmodule_exsysImportErrorr*   )r2   dirbaser   r   trees         r   ry   z"ModuleBrowserTreeItem.listchildren   s    ?&ty11 	IGMM$),,	T'""4((a	'sech.>??DD 	 	 	III	!$---s   "#B BBN)
rf   rg   rh   r3   rn   rq   rz   r}   r   ry   ri   r   r   re   re      s          + + +  J J J  2 2 2
. 
. 
. 
. 
.r   re   c                   4    e Zd Z	 d Zd Zd Zd Zd Zd ZdS )ru   c                 l    	 || _         |j        | _        t          |t          j                  | _        d S r   )r&   r   r   rJ   Function
isfunction)r2   r&   s     r   r3   zChildBrowserTreeItem.__init__   s,    ?H	$S&/::r   c                 :    	 | 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/    ;y? 	#D=7**d?"r   c                     	 | j         rdS dS )Nrp   folder)r   rc   s    r   rq   z ChildBrowserTreeItem.GetIconName   s    1? 	88r   c                 $    	 | j         j        i k    S r   )r&   childrenrc   s    r   r   z!ChildBrowserTreeItem.IsExpandable   s    5x B&&r   c                 J    	 d t          | j        j                  D             S )Nc                 ,    g | ]}t          |          S ri   rt   rv   s     r   rx   z3ChildBrowserTreeItem.GetSubList.<locals>.<listcomp>   s6     B B B %S)) B B Br   )r*   r&   r   rc   s    r   rz   zChildBrowserTreeItem.GetSubList   s9    4B B-dh.?@@B B B 	Br   c                     	 	 t          | j        j                  }|                    | j        j                   d S # t
          t          f$ r Y d S w xY wr   )rI   r&   rl   gotolinelinenoOSErrorAttributeError)r2   edits     r   r}   z"ChildBrowserTreeItem.OnDoubleClick   s^    <	TX]++DMM$(/*****( 	 	 	DD	s   8= AAN)	rf   rg   rh   r3   rn   rq   r   rz   r}   ri   r   r   ru   ru      sv        
; ; ;# # #  ' ' 'B B B
    r   ru   c                     t          t          j                  dk    rt          j        d         }nt          } G d dt                    }d }t          | |d           d S )Nr?   c                       e Zd Zd ZdS )'_module_browser.<locals>.Nested_in_funcc                      d S 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          } d S )Nc                       e Zd ZdS );_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      s{    
38}}qx{	( 	( 	( 	( 	(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   ru   r   rf   r   r   unittestr   idlelib.idle_test.htestr   ri   r   r   <module>r      s   
			  



 # # # # # #       ; ; ; ; ; ; ; ; ; ; & & & & & & ) ) ) ) ) ) 	 "+ N N N   @J0 J0 J0 J0 J0 J0 J0 J0Z1. 1. 1. 1. 1.H 1. 1. 1.h* * * * *8 * * *Z
- 
- 
- z
s38}}!!!!!!-GGGG++++++C r   