
“àWJ  ã               @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z m	 Z	 d  d l
 m Z m Z d  d l m Z d d d d d „ 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 e ƒ d S)é    N)ÚTreeNodeÚTreeItemÚScrolledCanvas)ÚObjectTreeItemÚmake_objecttreeitem)ÚPyShellFileListc             C   s~   | d  k r t  j |  ƒ } t | d d d d ƒ} | j j d d d d ƒ t | | ƒ } t | j d  | ƒ } | j ƒ  d  S)	NÚbgZwhiteZhighlightthicknessr   Úexpandé   ÚfillZboth)	ÚtkZToplevelr   ÚframeÚpackÚStackTreeItemr   Zcanvasr	   )ÚrootÚflistÚtbÚtopZscÚitemZnode© r   ú@/afs/.cs/s/python-3.5.2/amd64_ubu14/lib/python3.5/StackViewer.pyÚStackBrowser   s    r   c               @   sR   e  Z d  Z d d d d „ Z d d „  Z d d „  Z d d	 „  Z d
 d „  Z d S)r   Nc             C   s.   | |  _  |  j | ƒ |  _ |  j ƒ  |  _ d  S)N)r   Ú	get_stackÚstackÚget_exceptionÚtext)Úselfr   r   r   r   r   Ú__init__   s    	zStackTreeItem.__init__c             C   sr   | d  k r t  j } g  } | r9 | j d  k r9 | j } x2 | d  k	 rm | j | j | j f ƒ | j } q< W| S)N)ÚsysÚlast_tracebackÚtb_frameÚtb_nextÚappendÚ	tb_lineno)r   r   r   r   r   r   r      s    		zStackTreeItem.get_stackc             C   sZ   t  j } t  j } t | d ƒ r* | j } t | ƒ } | d  k	 rV | d t | ƒ } | S)NÚ__name__z: )r   Ú	last_typeÚ
last_valueÚhasattrr$   Ústr)r   ÚtypeÚvalueÚsr   r   r   r   &   s    			zStackTreeItem.get_exceptionc             C   s   |  j  S)N)r   )r   r   r   r   ÚGetText0   s    zStackTreeItem.GetTextc             C   s=   g  } x0 |  j  D]% } t | |  j ƒ } | j | ƒ q W| S)N)r   ÚFrameTreeItemr   r"   )r   ÚsublistÚinfor   r   r   r   Ú
GetSubList3   s
    zStackTreeItem.GetSubList)r$   Ú
__module__Ú__qualname__r   r   r   r,   r0   r   r   r   r   r      s
   
r   c               @   s@   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 S)
r-   c             C   s   | |  _  | |  _ d  S)N)r/   r   )r   r/   r   r   r   r   r   <   s    	zFrameTreeItem.__init__c       	      C   s¦   |  j  \ } } y | j d } Wn d } Yn X| j } | j } | j } t j | | ƒ } | j ƒ  } | d k rŒ d | | | f } n d | | | | f } | S)Nr$   ú?Ú z%s, line %d: %sz%s.%s(...), line %d: %s)r3   r4   N)r/   Ú	f_globalsÚf_codeÚco_filenameÚco_nameÚ	linecacheÚgetlineÚstrip)	r   r   ÚlinenoÚmodnameÚcodeÚfilenameÚfuncnameZ
sourceliner   r   r   r   r,   @   s    				zFrameTreeItem.GetTextc             C   su   |  j  \ } } g  } | j | j k	 rL t d | j |  j ƒ } | j | ƒ t d | j |  j ƒ } | j | ƒ | S)Nz<locals>z	<globals>)r/   r5   Úf_localsÚVariablesTreeItemr   r"   )r   r   r<   r.   r   r   r   r   r0   R   s    zFrameTreeItem.GetSubListc             C   sM   |  j  rI |  j \ } } | j j } t j j | ƒ rI |  j  j | | ƒ d  S)N)r   r/   r6   r7   ÚosÚpathÚisfileZgotofileline)r   r   r<   r?   r   r   r   ÚOnDoubleClick\   s
    	zFrameTreeItem.OnDoubleClickN)r$   r1   r2   r   r,   r0   rF   r   r   r   r   r-   :   s   
r-   c               @   sL   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d S)rB   c             C   s   |  j  S)N)Z	labeltext)r   r   r   r   r,   e   s    zVariablesTreeItem.GetTextc             C   s   d  S)Nr   )r   r   r   r   ÚGetLabelTexth   s    zVariablesTreeItem.GetLabelTextc             C   s   t  |  j ƒ d k S)Nr   )ÚlenÚobject)r   r   r   r   ÚIsExpandablek   s    zVariablesTreeItem.IsExpandablec             C   s…   g  } xx |  j  j ƒ  D]g } y |  j  | } Wn t k
 rD w Yn X| |  j  d d „ } t | d | | ƒ } | j | ƒ q W| S)Nc             S   s   |  | | <d  S)Nr   )r*   ÚkeyrI   r   r   r   Úsetfunctionu   s    z1VariablesTreeItem.GetSubList.<locals>.setfunctionz =)rI   ÚkeysÚKeyErrorr   r"   )r   r.   rK   r*   rL   r   r   r   r   r0   n   s    zVariablesTreeItem.GetSubListc             C   s   t  |  j j ƒ  ƒ S)N)ÚlistrI   rM   )r   r   r   r   rM   {   s    zVariablesTreeItem.keysN)r$   r1   r2   r,   rG   rJ   r0   rM   r   r   r   r   rB   c   s
   rB   c       
      C   sò   t  j ƒ  } | j d ƒ t t t t j d |  j ƒ  ƒ ƒ ƒ \ } } } } | j d | | d f ƒ t	 | ƒ } y t
 Wn' t k
 r¤ t j ƒ  \ } } }	 Yn X| t _ | t _ |	 t _ t | d | d | d |	 ƒt ` t ` t ` d  S)NzTest StackViewerz[x+]z+%d+%dé–   r   r   r   )r   ZTkÚtitlerO   ÚmapÚintÚreÚsplitZgeometryr   Zintentional_name_errorÚ	NameErrorr   Úexc_infor%   r&   r   r   )
Úparentr   ÚwidthZheightÚxÚyr   Úexc_typeÚ	exc_valueÚexc_tbr   r   r   Ú_stack_viewer~   s     3			r_   Ú__main__)Úrun)rC   r   r9   rT   Útkinterr   Zidlelib.TreeWidgetr   r   r   Zidlelib.ObjectBrowserr   r   Zidlelib.PyShellr   r   r   r-   rB   r_   r$   Zidlelib.idle_test.htestra   r   r   r   r   Ú<module>   s   	&)