
ΆIX                 @   s6  d  d l  Z  d  d l m Z m Z m Z d  d l m Z e   Z d e _ d e _	 Gd d   d e  Z
 Gd d   d e
  Z Gd	 d
   d
 e
  Z Gd d   d e
  Z Gd d   d e  Z e e e e e e e e e e e e e e i Z d d d  Z d d   Z e d k r2d  d l m Z e e  d S)    N)TreeItemTreeNodeScrolledCanvas)Reprd   c               @   ss   e  Z d  Z d d 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)ObjectTreeItemNc             C   s   | |  _  | |  _ | |  _ d  S)N)	labeltextobjectsetfunction)selfr   r	   r
    r   K/afs/.cs.wisc.edu/s/python-3.5.2/amd64_ubu16/lib/python3.5/ObjectBrowser.py__init__   s    		zObjectTreeItem.__init__c             C   s   |  j  S)N)r   )r   r   r   r   GetLabelText   s    zObjectTreeItem.GetLabelTextc             C   s   t  j |  j  S)N)myreprreprr	   )r   r   r   r   GetText   s    zObjectTreeItem.GetTextc             C   s   |  j    s d Sd  S)Npython)IsExpandable)r   r   r   r   GetIconName   s    zObjectTreeItem.GetIconNamec             C   s   |  j  d  k	 S)N)r
   )r   r   r   r   
IsEditable"   s    zObjectTreeItem.IsEditablec          	   C   s5   y t  |  } |  j |  Wn Yn
 X| |  _ d  S)N)evalr
   r	   )r   textvaluer   r   r   SetText$   s    zObjectTreeItem.SetTextc             C   s   t  |  j  S)N)dirr	   )r   r   r   r   r   ,   s    zObjectTreeItem.IsExpandablec             C   s   t  |  j  } g  } xt | D]l } y t |  j |  } Wn t k
 rO w Yn Xt t |  d | | |  j d d   } | j |  q W| S)Nz =c             S   s   t  | | |   S)N)setattr)r   keyr	   r   r   r   <lambda>9   s    z+ObjectTreeItem.GetSubList.<locals>.<lambda>)r   r	   getattrAttributeErrormake_objecttreeitemstrappend)r   keyssublistr   r   itemr   r   r   
GetSubList.   s    zObjectTreeItem.GetSubList)__name__
__module____qualname__r   r   r   r   r   r   r   r'   r   r   r   r   r      s   r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)ClassTreeItemc             C   s   d S)NTr   )r   r   r   r   r   ?   s    zClassTreeItem.IsExpandablec             C   sl   t  j |   } t |  j j  d k rC t d |  j j d  } n t d |  j j  } | j d |  | S)N   z__bases__[0] =r   z__bases__ =)r   r'   lenr	   	__bases__r!   insert)r   r%   r&   r   r   r   r'   A   s    zClassTreeItem.GetSubListN)r(   r)   r*   r   r'   r   r   r   r   r+   >   s   r+   c               @   s   e  Z d  Z d d   Z d S)AtomicObjectTreeItemc             C   s   d S)Nr   r   )r   r   r   r   r   L   s    z!AtomicObjectTreeItem.IsExpandableN)r(   r)   r*   r   r   r   r   r   r0   K   s   r0   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)SequenceTreeItemc             C   s   t  |  j  d k S)Nr   )r-   r	   )r   r   r   r   r   P   s    zSequenceTreeItem.IsExpandablec             C   s   t  t |  j   S)N)ranger-   r	   )r   r   r   r   r$   R   s    zSequenceTreeItem.keysc             C   s   g  } xx |  j    D]j } y |  j | } Wn t k
 rA w Yn X| |  j d d  } t d | f | |  } | j |  q W| S)Nc             S   s   |  | | <d  S)Nr   )r   r   r	   r   r   r   r
   [   s    z0SequenceTreeItem.GetSubList.<locals>.setfunctionz%r:)r$   r	   KeyErrorr!   r#   )r   r%   r   r   r
   r&   r   r   r   r'   T   s    zSequenceTreeItem.GetSubListN)r(   r)   r*   r   r$   r'   r   r   r   r   r1   O   s   r1   c               @   s   e  Z d  Z d d   Z d S)DictTreeItemc          	   C   s2   t  |  j j    } y | j   Wn Yn X| S)N)listr	   r$   sort)r   r$   r   r   r   r$   b   s    zDictTreeItem.keysN)r(   r)   r*   r$   r   r   r   r   r4   a   s   r4   c             C   s;   t  |  } | t k r% t | } n t } | |  | |  S)N)typedispatchr   )r   r	   r
   tcr   r   r   r!   t   s
    r!   c             C   s  d d  l  } d d l m } |   } | j d  t t t t j d |  j	      \ } } } } | j	 d | | d f  | j
 d d d d	  | j   t | d d
 d d d d } | j j d d d d  t d |  }	 t | j d  |	  }
 |
 j   | j   d  S)Nr   )TkzTest ObjectBrowserz[x+]z+%d+%d   ZbdbgZyellowZwhiteZhighlightthicknessZ	takefocusr,   expandfillZbothsys)r@   tkinterr;   titler5   mapintresplitZgeometryZ	configureZ	focus_setr   framepackr!   r   ZcanvasupdateZmainloop)parentr@   r;   rootwidthZheightxyZscr&   Znoder   r   r   _object_browser}   s    	3

rO   __main__)run)rE   Zidlelib.TreeWidgetr   r   r   reprlibr   r   	maxstringmaxotherr   r+   r0   r1   r4   rD   floatr"   tupler5   dictr7   r8   r!   rO   r(   Zidlelib.idle_test.htestrQ   r   r   r   r   <module>   s,   			(
	