a
    Ify                     @   s   d dl Zd dlZd dlZd dlmZmZ d dlmZ G dd deZ	G dd deZ
G dd	 d	eZd
d Zedkrd dlmZ edddd d dlmZ ee dS )    N)ModuleBrowserModuleBrowserTreeItem)TreeItemc                   @   s,   e Zd ZdddddZdd Zdd Zd	S )
PathBrowserF)_htest_utestc                C   s   || _ || _|| _|   dS )zG
        _htest - bool, change box location when running htest
        N)masterr   r   init)selfr   r   r    r   $lib/python3.9/idlelib/pathbrowser.py__init__   s    zPathBrowser.__init__c                 C   s   | j d | j d dS )zSet window titles.zPath BrowserN)topZwm_titleZwm_iconnamer
   r   r   r   settitle   s    zPathBrowser.settitlec                 C   s   t  S N)PathBrowserTreeItemr   r   r   r   rootnode   s    zPathBrowser.rootnodeN)__name__
__module____qualname__r   r   r   r   r   r   r   r   	   s   	r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s   dS )Nzsys.pathr   r   r   r   r   GetText   s    zPathBrowserTreeItem.GetTextc                 C   s&   g }t jD ]}t|}|| q
|S r   )syspathDirBrowserTreeItemappend)r
   sublistdiritemr   r   r   
GetSubList"   s
    
zPathBrowserTreeItem.GetSubListN)r   r   r   r   r   r   r   r   r   r      s   r   c                   @   s8   e Zd Zg fddZdd Zdd Zdd Zd	d
 ZdS )r   c                 C   s   || _ || _d S r   )r   packages)r
   r   r    r   r   r   r   ,   s    zDirBrowserTreeItem.__init__c                 C   s   | j s| jS | j d d S d S )Nz	: package)r    r   r   r   r   r   r   0   s    zDirBrowserTreeItem.GetTextc                 C   s   zt | jpt j}W n ty,   g  Y S 0 g }|D ]:}t j| j|}| |r6t j|}|	|||f q6|
  g }|D ]&\}}}t|| j|g }|	| q| |D ]&\}}tt j| j|}|	| q|S r   )oslistdirr   curdirOSErrorr   joinispackagedirnormcaser   sortr   r    listmodulesr   )r
   namesr    namefileZnnr   r   r   r   r   r   6   s&    

zDirBrowserTreeItem.GetSubListc                 C   s*   t j|sdS t j|d}t j|S )z/ Return true for directories that are packages.Fz__init__.py)r"   r   isdirr&   exists)r
   r-   r	   r   r   r   r'   K   s    zDirBrowserTreeItem.ispackagedirc           
      C   s   i }t jjd d  }|t jj7 }|t jj7 }g }|D ]p}t| }|d d  D ]T}tj|}||d  |krN|d | }	|	|vrNd ||	< |	||f |
| qNq4|  |S r   )	importlib	machineryEXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXESlenr"   r   r(   r   remover)   )
r
   ZallnamesmodulessuffixessortedZsuffir,   Znormed_namemod_namer   r   r   r*   R   s"    
zDirBrowserTreeItem.listmodulesN)r   r   r   r   r   r   r'   r*   r   r   r   r   r   *   s
   r   c                 C   s   t | dd |   d S )NT)r   )r   Zmainloop)parentr   r   r   _path_browserf   s    r=   __main__)mainz"idlelib.idle_test.test_pathbrowser   F)	verbosityexit)run)importlib.machineryr0   r"   r   Zidlelib.browserr   r   Zidlelib.treer   r   r   r   r=   r   Zunittestr?   Zidlelib.idle_test.htestrC   r   r   r   r   <module>   s   <