B � ff�@s�ddlZddlZddlZddlZddlmZmZddlm Z m Z m Z ddd�Z Gdd�de �Z Gdd �d e �ZGd d �d e�Zd d �Zedkr�ddlmZedddd�ddlmZee�dS)�N)�ObjectTreeItem�make_objecttreeitem)�TreeNode�TreeItem�ScrolledCanvascCsT|dkrt�|�}t|ddd�atjjddd�t||�attj dt�a t � �dS)NZwhiter)ZbgZhighlightthickness�Zboth)�expandZfill) �tk�ToplevelrZsc�frameZpack� StackTreeItem�itemrZcanvasZnoder)�root�flist�tb�top�r�8/opt/alt/python37/lib64/python3.7/idlelib/stackviewer.py� StackBrowser s  rc@s6eZdZd dd�Zdd�Zdd�Zdd �Zd d �ZdS) r NcCs ||_|�|�|_|��|_dS)N)r� get_stack�stack� get_exception�text)�selfrrrrr�__init__s zStackTreeItem.__init__cCsP|dkrtj}g}|r&|jdkr&|j}x$|dk rJ|�|j|jf�|j}q(W|S)N)�sys�last_traceback�tb_frame�tb_next�append� tb_lineno)rrrrrrrs  zStackTreeItem.get_stackcCs@tj}tj}t|d�r|j}t|�}|dk r<|dt|�}|S)N�__name__z: )r� last_type� last_value�hasattrr!�str)r�type�value�srrrr's zStackTreeItem.get_exceptioncCs|jS)N)r)rrrr�GetText1szStackTreeItem.GetTextcCs.g}x$|jD]}t||j�}|�|�q W|S)N)r� FrameTreeItemrr)r�sublist�infor rrr� GetSubList4s   zStackTreeItem.GetSubList)NN)r!� __module__� __qualname__rrrr)r-rrrrr s    r c@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) r*cCs||_||_dS)N)r,r)rr,rrrrr>szFrameTreeItem.__init__c Cs||j\}}y|jd}Wnd}YnX|j}|j}|j}t�||�}|��}|dkrhd|||f}nd||||f}|S)Nr!�?)r0�Nz%s, line %d: %sz%s.%s(...), line %d: %s)r,� f_globals�f_code� co_filename�co_name� linecache�getline�strip) rr �lineno�modname�code�filename�funcnameZ sourceliner rrrr)Bs    zFrameTreeItem.GetTextcCsR|j\}}g}|j|jk r4td|j|j�}|�|�td|j|j�}|�|�|S)Nzz )r,r2�f_locals�VariablesTreeItemrr)rr r9r+r rrrr-Ts    zFrameTreeItem.GetSubListcCs6|jr2|j\}}|jj}tj�|�r2|j�||�dS)N)rr,r3r4�os�path�isfileZ gotofileline)rr r9r<rrr� OnDoubleClick^s   zFrameTreeItem.OnDoubleClickN)r!r.r/rr)r-rCrrrrr*<s r*c@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) r?cCs|jS)N)Z labeltext)rrrrr)hszVariablesTreeItem.GetTextcCsdS)Nr)rrrr� GetLabelTextkszVariablesTreeItem.GetLabelTextcCst|j�dkS)Nr)�len�object)rrrr� IsExpandablenszVariablesTreeItem.IsExpandablec Cslg}xb|j��D]T}y|j|}Wntk r8wYnX||jfdd�}t|d||�}|�|�qW|S)NcSs |||<dS)Nr)r'�keyrFrrr� setfunctionxsz1VariablesTreeItem.GetSubList..setfunctionz =)rF�keys�KeyErrorrr)rr+rHr'rIr rrrr-qszVariablesTreeItem.GetSubListN)r!r.r/r)rDrGr-rrrrr?fsr?c Cs�ddlm}t�|�}|�d�tt|���d�dd��\}}|�d|d|df�||�}yt Wn"t k r�t � �\}}}YnX|t _ |t _|t _t||||d �t ` t `t `dS) Nr)�PyShellFileListzTest StackViewer�+rz+%d+%d�2�)rrr)Zidlelib.pyshellrLr r �title�map�intZgeometry�splitZintentional_name_error� NameErrorr�exc_infor"r#rr) �parentrLr�x�yr�exc_type� exc_valueZexc_tbrrr� _stack_viewers"    r[�__main__)�mainz"idlelib.idle_test.test_stackviewer�F)� verbosity�exit)�run)NNN)r6r@rZtkinterr Zidlelib.debugobjrrZ idlelib.treerrrrr r*r?r[r!Zunittestr]Zidlelib.idle_test.htestrarrrr�s '*