3 2af@sddlZddlZddlZddlZddlmZmZddlm Z m Z m Z dddZ Gddde Z Gdd d e ZGd d d eZd d ZedkrddlmZeddddddlmZeedS)N)ObjectTreeItemmake_objecttreeitem)TreeNodeTreeItemScrolledCanvascCsT|dkrtj|}t|dddatjjdddt||attj dta t j dS)NZwhiter)bgZhighlightthicknessZboth)expandfill) tkToplevelrZscframepack StackTreeItemitemrZcanvasZnoder )rootflisttbtopr0/opt/alt/python36/lib64/python3.6/stackviewer.py StackBrowser s  rc@s6eZdZd ddZddZddZdd Zd d ZdS) rNcCs ||_|j||_|j|_dS)N)r get_stackstack get_exceptiontext)selfrrrrr__init__s zStackTreeItem.__init__cCsP|dkrtj}g}|r&|jdkr&|j}x$|dk rJ|j|j|jf|j}q(W|S)N)syslast_tracebacktb_frametb_nextappend tb_lineno)rrrrrrrs  zStackTreeItem.get_stackcCs@tj}tj}t|dr|j}t|}|dk r<|dt|}|S)N__name__z: )r last_type last_valuehasattrr$str)rtypevaluesrrrr's zStackTreeItem.get_exceptioncCs|jS)N)r)rrrrGetText1szStackTreeItem.GetTextcCs.g}x$|jD]}t||j}|j|q W|S)N)r FrameTreeItemrr")rsublistinforrrr GetSubList4s   zStackTreeItem.GetSubList)NN)r$ __module__ __qualname__rrrr,r0rrrrrs    rc@s,eZdZddZddZddZddZd S) r-cCs||_||_dS)N)r/r)rr/rrrrr>szFrameTreeItem.__init__c Cs||j\}}y|jd}Wnd}YnX|j}|j}|j}tj||}|j}|dkrhd|||f}nd||||f}|S)Nr$?z%s, line %d: %sz%s.%s(...), line %d: %s)r3r4N)r/ f_globalsf_code co_filenameco_name linecachegetlinestrip) rr linenomodnamecodefilenamefuncnameZ sourcelinerrrrr,Bs    zFrameTreeItem.GetTextcCsR|j\}}g}|j|jk r4td|j|j}|j|td|j|j}|j||S)Nzz )r/r5f_localsVariablesTreeItemrr")rr r<r.rrrrr0Ts    zFrameTreeItem.GetSubListcCs6|jr2|j\}}|jj}tjj|r2|jj||dS)N)rr/r6r7ospathisfileZ gotofileline)rr r<r?rrr OnDoubleClick^s   zFrameTreeItem.OnDoubleClickN)r$r1r2rr,r0rFrrrrr-<s r-c@s,eZdZddZddZddZddZd S) rBcCs|jS)N)Z labeltext)rrrrr,hszVariablesTreeItem.GetTextcCsdS)Nr)rrrr GetLabelTextkszVariablesTreeItem.GetLabelTextcCst|jdkS)Nr)lenobject)rrrr IsExpandablenszVariablesTreeItem.IsExpandablec Cslg}xb|jjD]T}y|j|}Wntk r8wYnX||jfdd}t|d||}|j|qW|S)NcSs |||<dS)Nr)r*keyrIrrr setfunctionxsz1VariablesTreeItem.GetSubList..setfunctionz =)rIkeysKeyErrorrr")rr.rKr*rLrrrrr0qszVariablesTreeItem.GetSubListN)r$r1r2r,rGrJr0rrrrrBfsrBc Csddlm}tj|}|jdtt|jjddd\}}|jd|d|df||}yt Wn"t k rt j \}}}YnX|t _ |t _|t _t||||d t ` t `t `dS) Nr)PyShellFileListzTest StackViewer+rz+%d+%d2)rrr)Zidlelib.pyshellrOr r titlemapintZgeometrysplitZintentional_name_error NameErrorrexc_infor%r&rr) parentrOrxyrexc_type exc_valueZexc_tbrrr _stack_viewers"    r^__main__)mainz"idlelib.idle_test.test_stackviewerF) verbosityexit)run)NNN)r9rCrZtkinterr Zidlelib.debugobjrrZ idlelib.treerrrrrr-rBr^r$Zunittestr`Zidlelib.idle_test.htestrdrrrrs '*