î Òê[:ã@sddlZddlZddlZddlZddlZddlmZmZm Z ddl m Z m Z ddl mZddddd„ZGdd„deƒZGd d „d eƒZGd d „d e ƒZd d„Zedkr ddlmZeeƒndS)éN)ÚTreeNodeÚTreeItemÚScrolledCanvas)ÚObjectTreeItemÚmake_objecttreeitem)ÚPyShellFileListcCsŽ|dkr+ddlm}||ƒ}nt|ddddƒ}|jjdddd ƒt||ƒ}t|jd|ƒ}|jƒdS) Nr)ÚToplevelZbgZwhiteZhighlightthicknessÚexpandéZfillZboth) ÚtkinterrrÚframeZpackÚ StackTreeItemrZcanvasr )ÚrootÚflistÚtbÚtoprZscÚitemZnode©rú)/usr/lib/python3.4/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__cCsx|dkrtj}ng}|r?|jdkr?|j}nx2|dk rs|j|j|jfƒ|j}qBW|S)N)ÚsysÚlast_tracebackÚtb_frameÚtb_nextÚappendÚ tb_lineno)rrrrrrrs    zStackTreeItem.get_stackcCs`tj}tj}t|dƒr-|j}nt|ƒ}|dk r\|dt|ƒ}n|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}x0|jD]%}t||jƒ}|j|ƒqW|S)N)rÚ FrameTreeItemrr )rÚsublistÚinforrrrÚ GetSubList4s 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)r1r2N)r-Ú f_globalsÚf_codeÚ co_filenameÚco_nameÚ linecacheÚgetlineÚstrip) rr ÚlinenoÚmodnameÚcodeÚfilenameZfuncnameZ sourcelinerrrrr*As        zFrameTreeItem.GetTextcCsx|j\}}g}|j|jk rOtd|j|jƒ}|j|ƒntd|j|jƒ}|j|ƒ|S)Nzz )r-r3Úf_localsÚVariablesTreeItemrr )rr r:r,rrrrr.Ss zFrameTreeItem.GetSubListcCsS|jrO|j\}}|jj}tjj|ƒrO|jj||ƒqOndS)N)rr-r4r5ÚosÚpathÚisfileZ gotofileline)rr r:r=rrrÚ OnDoubleClick]s   zFrameTreeItem.OnDoubleClickN)r"r/r0rr*r.rCrrrrr+;s    r+c@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) r?cCs|jS)N)Z labeltext)rrrrr*fszVariablesTreeItem.GetTextcCsdS)Nr)rrrrÚ GetLabelTextiszVariablesTreeItem.GetLabelTextcCst|jƒdkS)Nr)ÚlenÚobject)rrrrÚ IsExpandablelszVariablesTreeItem.IsExpandablecCst|jjƒƒS)N)ÚlistrFÚkeys)rrrrrIoszVariablesTreeItem.keysc Cs‚g}xu|jƒD]g}y|j|}Wntk rAwYnX||jdd„}t|d||ƒ}|j|ƒqW|S)NcSs|||.setfunctionz =)rIrFÚKeyErrorrr )rr,rJr(rKrrrrr.rs zVariablesTreeItem.GetSubListN)r"r/r0r*rDrGrIr.rrrrr?ds     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)ÚtkZTkÚtitlerHÚmapÚintÚreÚsplitZgeometryrZintentional_name_errorÚ NameErrorrÚexc_infor#r$rr) ÚparentrÚwidthZheightÚxÚyrÚexc_typeÚ exc_valueZexc_tbrrrÚ _stack_viewers   3     r\Ú__main__)Úrun)r@rr7rRr rNZidlelib.TreeWidgetrrrZidlelib.ObjectBrowserrrZidlelib.PyShellrrr r+r?r\r"Zidlelib.idle_test.htestr^rrrrÚs      &)