FüƒaJã@s ddlZddlZddlZddlZddlZddlmZmZm Z ddl m Z m Z ddl mZddddd„ZGdd„deƒZGd d „d eƒZGd d „d e ƒZd d„ZedkrddlmZeeƒdS)éN)ÚTreeNodeÚTreeItemÚScrolledCanvas)ÚObjectTreeItemÚmake_objecttreeitem)ÚPyShellFileListcCs~|dkrtj|ƒ}t|ddddƒ}|jjddddƒt||ƒ}t|jd|ƒ}|jƒdS) NZbgZwhiteZhighlightthicknessrÚexpandéZfillZboth) ÚtkZToplevelrÚframeZpackÚ StackTreeItemrZcanvasr)ÚrootÚflistÚtbÚtopZscÚitemZnode©rú)/usr/lib/python3.5/idlelib/StackViewer.pyÚ StackBrowser s rc@sReZdZdddd„Zdd„Zdd„Zdd „Zd d „ZdS) r NcCs.||_|j|ƒ|_|jƒ|_dS)N)rÚ get_stackÚstackÚ get_exceptionÚtext)ÚselfrrrrrÚ__init__s zStackTreeItem.__init__cCsr|dkrtj}g}|r9|jdkr9|j}x2|dk rm|j|j|jfƒ|j}q<W|S)N)ÚsysÚlast_tracebackÚtb_frameÚtb_nextÚappendÚ tb_lineno)rrrrrrrs    zStackTreeItem.get_stackcCsZtj}tj}t|dƒr*|j}t|ƒ}|dk rV|dt|ƒ}|S)NÚ__name__z: )rÚ last_typeÚ last_valueÚhasattrr!Ústr)rÚtypeÚvalueÚsrrrr&s     zStackTreeItem.get_exceptioncCs|jS)N)r)rrrrÚGetText0szStackTreeItem.GetTextcCs=g}x0|jD]%}t||jƒ}|j|ƒqW|S)N)rÚ FrameTreeItemrr)rÚsublistÚinforrrrÚ GetSubList3s zStackTreeItem.GetSubList)r!Ú __module__Ú __qualname__rrrr)r-rrrrr s  r c@s@eZdZdd„Zdd„Zdd„Zdd„Zd S) r*cCs||_||_dS)N)r,r)rr,rrrrr<s zFrameTreeItem.__init__c Cs¦|j\}}y|jd}Wnd}YnX|j}|j}|j}tj||ƒ}|jƒ}|dkrŒd|||f}nd||||f}|S)Nr!ú?Úz%s, line %d: %sz%s.%s(...), line %d: %s)r0r1N)r,Ú f_globalsÚf_codeÚ co_filenameÚco_nameÚ linecacheÚgetlineÚstrip) rr ÚlinenoÚmodnameÚcodeÚfilenameÚfuncnameZ sourcelinerrrrr)@s        zFrameTreeItem.GetTextcCsu|j\}}g}|j|jk rLtd|j|jƒ}|j|ƒtd|j|jƒ}|j|ƒ|S)Nzz )r,r2Úf_localsÚVariablesTreeItemrr)rr r9r+rrrrr-Rs  zFrameTreeItem.GetSubListcCsM|jrI|j\}}|jj}tjj|ƒrI|jj||ƒdS)N)rr,r3r4ÚosÚpathÚisfileZ gotofileline)rr r9r<rrrÚ OnDoubleClick\s   zFrameTreeItem.OnDoubleClickN)r!r.r/rr)r-rCrrrrr*:s    r*c@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) r?cCs|jS)N)Z labeltext)rrrrr)eszVariablesTreeItem.GetTextcCsdS)Nr)rrrrÚ GetLabelTexthszVariablesTreeItem.GetLabelTextcCst|jƒdkS)Nr)ÚlenÚobject)rrrrÚ IsExpandablekszVariablesTreeItem.IsExpandablec Cs…g}xx|jjƒD]g}y|j|}Wntk rDwYnX||jdd„}t|d||ƒ}|j|ƒqW|S)NcSs|||.setfunctionz =)rFÚkeysÚKeyErrorrr)rr+rHr'rIrrrrr-ns zVariablesTreeItem.GetSubListcCst|jjƒƒS)N)ÚlistrFrJ)rrrrrJ{szVariablesTreeItem.keysN)r!r.r/r)rDrGr-rJrrrrr?cs     r?c Csòtjƒ}|jdƒttttjd|jƒƒƒƒ\}}}}|jd||dfƒt |ƒ}yt Wn't k r¤t j ƒ\}}} YnX|t _|t _| t _t|d|d|d| ƒt `t `t `dS)NzTest StackViewerz[x+]z+%d+%dé–rrr)r ZTkÚtitlerLÚmapÚintÚreÚsplitZgeometryrZintentional_name_errorÚ NameErrorrÚexc_infor"r#rr) Úparentr ÚwidthZheightÚxÚyrÚexc_typeÚ exc_valueZexc_tbrrrÚ _stack_viewer~s   3     r[Ú__main__)Úrun)r@rr6rQZtkinterr Zidlelib.TreeWidgetrrrZidlelib.ObjectBrowserrrZidlelib.PyShellrrr r*r?r[r!Zidlelib.idle_test.htestr]rrrrÚs      &)