B
    \y                 @   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.7/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)PathBrowserTreeItem)r
   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 }x t jD ]}t|}|| qW |S )N)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 )N)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   yt | jpt j}W n tk
r*   g S X g }xB|D ]:}t j| j|}| |r6t j|}|	|||f q6W |
  g }x.|D ]&\}}}t|| j|g }|	| qW x4| |D ]&\}}tt j| j|}|	| qW |S )N)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 }x||D ]t}t| }xd|d d  D ]T}tj|}||d  |krR|d | }	|	|krRd ||	< |	||f |
| qRW q6W |  |S )N)	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.machineryr.   r    r   Zidlelib.browserr   r   Zidlelib.treer   r   r   r   r;   r   Zunittestr=   Zidlelib.idle_test.htestrA   r   r   r   r   <module>   s   <