
\[\'                 @   s   d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l m Z m Z d  d l	 m
 Z
 Gd d   d e  Z Gd d   d e  Z Gd	 d
   d
 e  Z d d   Z e d k r d  d l m Z e d d d d d d  d l m Z e e  n  d S)    N)TreeItem)ClassBrowserModuleBrowserTreeItem)PyShellFileListc               @   s7   e  Z d  Z d d d  Z d d   Z d d   Z d S)	PathBrowserFc             C   s   | |  _  |  j |  d S)zG
        _htest - bool, change box location when running htest
        N)_htestinit)selfflistr    r   )/usr/lib/python3.4/idlelib/PathBrowser.py__init__   s    	zPathBrowser.__init__c             C   s$   |  j  j d  |  j  j d  d  S)NzPath Browser)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   s7   g  } x* t  j D] } t |  } | j |  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               @   sO   e  Z d  Z g  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 Sd  S)N   z	: package)r   r   )r	   r   r   r   r   ,   s    	zDirBrowserTreeItem.GetTextc             C   s@  y t  j |  j p t  j  } Wn t k
 r7 g  SYn Xg  } x` | D]X } t  j j |  j |  } |  j |  rE t  j j |  } | j	 | | | f  qE qE W| j
   g  } x= | D]5 \ } } } t | |  j | g  } | j	 |  q WxH |  j |  D]7 \ } } t t  j j |  j |   } | j	 |  qW| S)N)oslistdirr   curdirOSErrorr   joinispackagedirnormcaser   sortr   r   listmodulesr   )r	   namesr   namefileZnnr   r   r   r   r   r   2   s&    	
zDirBrowserTreeItem.GetSubListc             C   s;   t  j j |  s d St  j j | d  } t  j j |  S)Nr   z__init__.py)r!   r   isdirr%   exists)r	   r,   r   r   r   r   r&   G   s    zDirBrowserTreeItem.ispackagedirc       
      C   s  i  } t  j j d  d   } | t  j j d  d   7} | t  j j d  d   7} g  } x | D] } t |  } x | d  d   D]z } t j j |  } | | d   | k r | d  |  }	 |	 | k r d  | |	 <| j	 | | f  | j
 |  q q q Wq] W| j   | 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_nameZmod_namer   r   r   r)   M   s"    

zDirBrowserTreeItem.listmodulesN)r   r   r   r   r   r   r&   r)   r   r   r   r   r   &   s
   r   c             C   s*   t  |   } t | d d |  j   d  S)Nr   T)r   r   Zmainloop)parentr
   r   r   r   _path_browser`   s    r;   __main__)mainz"idlelib.idle_test.test_pathbrowser	verbosity   exitF)run)r!   r   importlib.machineryr/   Zidlelib.TreeWidgetr   Zidlelib.ClassBrowserr   r   Zidlelib.PyShellr   r   r   r   r;   r   Zunittestr=   Zidlelib.idle_test.htestrA   r   r   r   r   <module>   s   :