o
    gz                      @   s   	 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adddZG dd	 d	ZG d
d de	ZG dd de	Zdd Zedkroeejdkrcd dlmZ edddd d dlmZ ee dS dS )    N)idleConf)pyshell)TreeNodeTreeItemScrolledCanvas)ListedToplevelc                 C   s   	 g }|   D ]U\}}|d u s|j|kr\t|drW|jrW|j|krWg }|jD ]#}t|tdu r3|}n|j}|j|jkrD|j d| }|| q&| jdd|7  _|| q|S )Nsuper .z({})z, )	itemsmodulehasattrr   nametypeappendformatjoin)Z
child_dictmodnameZobskeyobjZsupersZsupZsname r   E/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/idlelib/browser.pytransform_children   s"   

r   c                   @   s@   e Zd Z	 dddddZdddZdd	 Zd
d Zdd ZdS )ModuleBrowserF)_htest_utestc                C   s&   	 || _ || _|| _|| _|   d S N)masterpathr   r   init)selfr   r   r   r   r   r   r   __init__A   s   zModuleBrowser.__init__Nc                 C   s   	 | j   | j  d S r   )topZdestroynode)r    eventr   r   r   closeY   s   
zModuleBrowser.closec           	      C   s  	 | j }| js| jstjnt|}|jatj	
  t| | _}|d| j |d| j | jrA|d| | d f  |   |  t }t|dd }t||ddd	}|jjdd
d |  }t|jd | | _}| js|  |   d S d S )NZWM_DELETE_WINDOWz<Escape>z+%d+%d   Znormal
backgroundr      )ZbgZhighlightthicknessZ	takefocusZboth)expandZfill)!r   r   r   r   flistZPyShellFileListopen	file_openpyclbrZ_modulesclearr   r"   protocolr%   bindZgeometryZwinfo_rootxZwinfo_rootysettitleZ	focus_setr   ZCurrentThemeZGetHighlightr   framepackrootnoder   Zcanvasr#   updater)   )	r    rootr*   r"   Zthemer'   Zscitemr#   r   r   r   r   ^   s8   
zModuleBrowser.initc                 C   s,   	 | j dtj| j  | j d d S )NzModule Browser - zModule Browser)r"   Zwm_titleosr   basenameZwm_iconnamer    r   r   r   r1   }   s   zModuleBrowser.settitlec                 C   s   	 t | jS r   )ModuleBrowserTreeItemr   r:   r   r   r   r4      s   
zModuleBrowser.rootnoder   )__name__
__module____qualname__r!   r%   r   r1   r4   r   r   r   r   r   :   s    
r   c                   @   sF   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )r;   c                 C   s   	 || _ d S r   )file)r    r?   r   r   r   r!      s   
zModuleBrowserTreeItem.__init__c                 C   s   	 t j| jS r   )r8   r   r9   r?   r:   r   r   r   GetText   s   zModuleBrowserTreeItem.GetTextc                 C   s   	 dS )Npythonr   r:   r   r   r   GetIconName   s   z!ModuleBrowserTreeItem.GetIconNamec                 C   s   	 dd |   D S )Nc                 S      g | ]}t |qS r   ChildBrowserTreeItem.0r   r   r   r   
<listcomp>   s    z4ModuleBrowserTreeItem.GetSubList.<locals>.<listcomp>)listchildrenr:   r   r   r   
GetSubList   s   z ModuleBrowserTreeItem.GetSubListc                 C   s@   	 t j| jdd  dkrd S t j| jsd S t| j d S N.py)r8   r   normcaser?   existsr,   r:   r   r   r   OnDoubleClick   s   z#ModuleBrowserTreeItem.OnDoubleClickc                 C   s   	 t j| jdd  dkS rK   )r8   r   rN   r?   r:   r   r   r   IsExpandable   s   z"ModuleBrowserTreeItem.IsExpandablec                 C   sr   	 t j| j\}}t j|\}}t j|dkrg S zt||gtj }W n t	y3   g  Y S w t
||S )NrM   )r8   r   splitr?   splitextrN   r-   Zreadmodule_exsysImportErrorr   )r    dirbaser   extZtreer   r   r   rI      s   
z"ModuleBrowserTreeItem.listchildrenN)
r<   r=   r>   r!   r@   rB   rJ   rP   rQ   rI   r   r   r   r   r;      s    r;   c                   @   s>   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd ZdS )rE   c                 C   s"   	 || _ |j| _t|tj| _d S r   )r   r   
isinstancer-   ZFunction
isfunction)r    r   r   r   r   r!      s   zChildBrowserTreeItem.__init__c                 C   s"   	 | j }| jrd| d S d| S )Nzdef z(...)zclass )r   rZ   )r    r   r   r   r   r@      s
   zChildBrowserTreeItem.GetTextc                 C   s   	 | j rdS dS )NrA   Zfolder)rZ   r:   r   r   r   rB      s   z ChildBrowserTreeItem.GetIconNamec                 C   s   	 | j ji kS r   )r   childrenr:   r   r   r   rQ      s   z!ChildBrowserTreeItem.IsExpandablec                 C   s   	 dd t | jjD S )Nc                 S   rC   r   rD   rF   r   r   r   rH      s    z3ChildBrowserTreeItem.GetSubList.<locals>.<listcomp>)r   r   r[   r:   r   r   r   rJ      s   
zChildBrowserTreeItem.GetSubListc              	   C   s<   	 zt | jj}|| jj W d S  ttfy   Y d S w r   )r,   r   r?   ZgotolinelinenoOSErrorAttributeError)r    Zeditr   r   r   rP      s   z"ChildBrowserTreeItem.OnDoubleClickN)	r<   r=   r>   r!   r@   rB   rQ   rJ   rP   r   r   r   r   rE      s    rE   c                 C   sH   t tjdkrtjd }nt}G dd dt}dd }t| |dd d S )Nr(   c                   @   s   e Zd Zdd ZdS )z'_module_browser.<locals>.Nested_in_funcc                   S   s   d S r   r   r   r   r   r   nested_in_class   s    z7_module_browser.<locals>.Nested_in_func.nested_in_classN)r<   r=   r>   r_   r   r   r   r   Nested_in_func   s    r`   c                  S   s   G dd d} d S )Nc                   @   s   e Zd ZdS )z;_module_browser.<locals>.closure.<locals>.Nested_in_closureN)r<   r=   r>   r   r   r   r   Nested_in_closure   s    ra   r   )ra   r   r   r   closure   s   z _module_browser.<locals>.closureT)r   )lenrT   argv__file__r   r   )parentr?   r`   rb   r   r   r   _module_browser   s   rg   __main__r(   )mainzidlelib.idle_test.test_browser   F)	verbosityexit)runr   )r8   r-   rT   Zidlelib.configr   Zidlelibr   Zidlelib.treer   r   r   Zidlelib.windowr   r,   r   r   r;   rE   rg   r<   rc   rd   Zunittestri   Zidlelib.idle_test.htestrm   r   r   r   r   <module>   s*    
 M4-