³ò
›\Kc        
   @   sì   d  Z  d d k Z d d k Z d d k Z d d k Z d d k l Z d d k l Z l	 Z	 l
 Z
 d d k l Z d d d „  ƒ  YZ d e	 f d	 „  ƒ  YZ d
 e	 f d „  ƒ  YZ d e	 f d „  ƒ  YZ d „  Z e d j o e ƒ  n d S(   s„  Class browser.

XXX TO DO:

- reparse when source changed (maybe just a button would be OK?)
    (or recheck on window popup)
- add popup menu with more options (e.g. doc strings, base classes, imports)
- show function argument list? (have to do pattern matching on source)
- should the classes and methods lists also be in the module's menu bar?
- add base classes to class browser tree
iÿÿÿÿN(   t   ListedToplevel(   t   TreeNodet   TreeItemt   ScrolledCanvas(   t   idleConft   ClassBrowserc           B   s8   e  Z d  „  Z d d „ Z d „  Z d „  Z d „  Z RS(   c         C   s=   | |  _  t i i | d |  i  d ƒ |  _ |  i | ƒ d  S(   Ni    s   .py(   t   namet   ost   patht   joint   filet   init(   t   selft   flistR   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyt   __init__   s    	#c         C   s   |  i  i ƒ  |  i i ƒ  d  S(   N(   t   topt   destroyt   node(   R   t   event(    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyt   close   s    c         C   s  | |  _  t i i ƒ  t | i ƒ |  _ } | i d |  i ƒ | i	 d |  i ƒ |  i
 ƒ  | i ƒ  t i d d d ƒ } t i | d ƒ d } t | d | d	 d
 d d ƒ} | i i d d d d ƒ |  i ƒ  } t | i d  | ƒ |  _ } | i ƒ  | i ƒ  d  S(   Nt   WM_DELETE_WINDOWs   <Escape>t   maint   ThemeR   t   normalt
   backgroundt   bgt   highlightthicknessi    t	   takefocusi   t   expandt   fillt   both(   R   t   pyclbrt   _modulest   clearR    t   rootR   t   protocolR   t   bindt   settitlet	   focus_setR   t	   GetOptiont   GetHighlightR   t   framet   packt   rootnodeR   t   canvast   NoneR   t   updateR   (   R   R   R   t   themeR   t   sct   itemR   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR   #   s    	


c         C   s+   |  i  i d |  i ƒ |  i  i d ƒ d  S(   Ns   Class Browser - s   Class Browser(   R   t   wm_titleR   t   wm_iconname(   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR%   7   s    c         C   s   t  |  i ƒ S(   N(   t   ModuleBrowserTreeItemR
   (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR+   ;   s    N(   t   __name__t
   __module__R   R-   R   R   R%   R+   (    (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR      s
   			R4   c           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   R
   (   R   R
   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR   @   s    c         C   s   t  i i |  i ƒ S(   N(   R   R   t   basenameR
   (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyt   GetTextC   s    c         C   s   d S(   Nt   python(    (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyt   GetIconNameF   s    c         C   sF   g  } x9 |  i  ƒ  D]+ } t | |  i |  i ƒ } | i | ƒ q W| S(   N(   t   listclassest   ClassBrowserTreeItemt   classesR
   t   append(   R   t   sublistR   R1   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyt
   GetSubListI   s     c         C   s]   t  i i |  i d ƒ d j o d  Sn t  i i |  i ƒ p d  Sn t i i |  i ƒ d  S(   Niýÿÿÿs   .py(   R   R   t   normcaseR
   t   existst   PyShellR   t   open(   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyt   OnDoubleClickP   s
     c         C   s   t  i i |  i d ƒ d j S(   Niýÿÿÿs   .py(   R   R   RA   R
   (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyt   IsExpandableW   s    c      
   C   sã  t  i i |  i ƒ \ } } t  i i | ƒ \ } } t  i i | ƒ d j o g  Sn y  t i | | g t i ƒ } Wn t	 j
 o } g  Sn Xg  } h  |  _
 x	| i ƒ  D]û \ } }	 |	 i | j oß | }
 t |	 d ƒ o¢ |	 i o˜ g  } xt |	 i D]i } t | ƒ t d ƒ j o
 | } n4 | i } | i |	 i j o d | i | f } n | i | ƒ qø W|
 d d i | ƒ }
 n | i |	 i |
 f ƒ |	 |  i
 |
 <q¬ q¬ W| i ƒ  g  } x! | D] \ } }
 | i |
 ƒ qÂW| S(   Ns   .pyt   supert    s   %s.%ss   (%s)s   , (   R   R   t   splitR
   t   splitextRA   R   t   readmodule_ext   syst   ImportErrorR=   t   itemst   modulet   hasattrRG   t   typeR   R>   R	   t   linenot   sort(   R   t   dirR
   R   t   extt   dictt   msgRN   t   keyt   clt   st   superst   supt   snamet   listR1   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR;   Z   sB     		 
 
	
 (	   R5   R6   R   R8   R:   R@   RE   RF   R;   (    (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR4   >   s   						R<   c           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   ss   | |  _  | |  _ | |  _ y |  i |  i  |  _ Wn" t t f j
 o d  |  _ n Xt |  i t i	 ƒ |  _
 d  S(   N(   R   R=   R
   RY   t
   IndexErrort   KeyErrorR-   t
   isinstanceR   t   Functiont
   isfunction(   R   R   R=   R
   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR   }   s    			c         C   s,   |  i  o d |  i d Sn d |  i Sd  S(   Ns   def s   (...)s   class (   Rc   R   (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR8   ‡   s    
c         C   s   |  i  o d Sn d Sd  S(   NR9   t   folder(   Rc   (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR:      s    
c         C   s<   |  i  o. y |  i  i SWq8 t j
 o t Sq8 Xn d  S(   N(   RY   t   methodst   AttributeErrort   False(   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyRF   “   s
    
c         C   sX   |  i  p g  Sn g  } x9 |  i ƒ  D]+ } t | |  i  |  i ƒ } | i | ƒ q% W| S(   N(   RY   t   listmethodst   MethodBrowserTreeItemR
   R>   (   R   R?   R   R1   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR@   š   s    
 c         C   sg   t  i i |  i ƒ p d  Sn t i i |  i ƒ } t |  i d ƒ o |  i i	 } | i
 | ƒ n d  S(   NRR   (   R   R   RB   R
   RC   R   RD   RP   RY   RR   t   gotoline(   R   t   editRR   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyRE   £   s    c         C   s†   |  i  p g  Sn g  } x3 |  i  i i ƒ  D] \ } } | i | | f ƒ q+ W| i ƒ  g  } x! | D] \ } } | i | ƒ qe W| S(   N(   RY   Re   RN   R>   RS   (   R   RN   R   RR   R^   R1   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyRh   «   s    
 
 (	   R5   R6   R   R8   R:   RF   R@   RE   Rh   (    (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR<   {   s   	
						Ri   c           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  | |  _ | |  _ d  S(   N(   R   RY   R
   (   R   R   RY   R
   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR   ¹   s    		c         C   s   d |  i  d S(   Ns   def s   (...)(   R   (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR8   ¾   s    c         C   s   d S(   NR9   (    (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR:   Á   s    c         C   s   d S(   Ni    (    (   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyRF   Ä   s    c         C   sQ   t  i i |  i ƒ p d  Sn t i i |  i ƒ } | i |  i i	 |  i
 ƒ d  S(   N(   R   R   RB   R
   RC   R   RD   Rj   RY   Re   R   (   R   Rk   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyRE   Ç   s    (   R5   R6   R   R8   R:   RF   RE   (    (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyRi   ·   s
   				c          C   s¿   y
 t  }  WnL t j
 o@ t i d }  t i d o t i d }  qY t i d }  n Xt i i |  ƒ \ } }  t i i |  ƒ d } t t	 i
 | | g ƒ t i t i j o t ƒ  n d  S(   Ni    i   (   t   __file__t	   NameErrorRL   t   argvR   R   RI   RJ   R   RC   R   t   stdint	   __stdin__t   mainloop(   R
   RT   R   (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pyR   Í   s    
t   __main__(    (   t   __doc__R   RL   R   RC   t
   WindowListR    t
   TreeWidgetR   R   R   t   configHandlerR   R   R4   R<   Ri   R   R5   (    (    (    s*   /usr/lib/python2.5/idlelib/ClassBrowser.pys   <module>   s   (=<	