
    "e                         d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
 ddZ G d de	      Z G d de	      Z G d	 d
e      Zd Zedk(  r d dlmZ  eddd       d dlmZ  ee       yy)    N)ObjectTreeItemmake_objecttreeitem)TreeNodeTreeItemScrolledCanvasc                    |t        j                  |       }t        |dd      at        j                  j                  dd       t        ||      at        t        j                  d t              a
t        j                          y )Nwhiter   )bghighlightthickness   both)expandfill)tkToplevelr   scframepackStackTreeItemitemr   canvasnoder   )rootexcflisttops       %lib/python3.12/idlelib/stackviewer.pyStackBrowserr      s^    
{kk$	A	>BHHMMM(e$DBIItT*DKKM    c                   &    e Zd ZddZd Zd Zd Zy)r   Nc                     || _         | j                  |d n|j                        | _        t	        |      j
                   dt        |       | _        y )Nz: )r   	get_stack__traceback__stacktype__name__strtext)selfr   r   s      r   __init__zStackTreeItem.__init__   sF    
^^CKDS=N=NO
Cy))*"SXJ7	r   c                     g }|r|j                   |j                  }|6|j                  |j                   |j                  f       |j                  }|6|S N)tb_frametb_nextappend	tb_lineno)r)   tbr$   s      r   r"   zStackTreeItem.get_stack   sQ    "++%BnLL"++r||45B n r   c                     | j                   S r,   )r(   r)   s    r   GetTextzStackTreeItem.GetText&   s    yyr   c                 z    g }| j                   D ])  }t        || j                        }|j                  |       + |S r,   )r$   FrameTreeItemr   r/   )r)   sublistinfor   s       r   
GetSubListzStackTreeItem.GetSubList)   s=    JJ 	!D tzz2DNN4 	! r   r,   )r&   
__module____qualname__r*   r"   r4   r9    r   r   r   r      s    8
r   r   c                   $    e Zd Zd Zd Zd Zd Zy)r6   c                      || _         || _        y r,   )r8   r   )r)   r8   r   s      r   r*   zFrameTreeItem.__init__3   s    	
r   c                    | j                   \  }}	 |j                  d   }|j                  }|j                  }|j                  }t        j                  ||      }|j                         }|dv r
d|||fz  }|S d||||fz  }|S #  d}Y ixY w)Nr&   ?)r@    Nz%s, line %d: %sz%s.%s(...), line %d: %s)r8   	f_globalsf_codeco_filenameco_name	linecachegetlinestrip)	r)   r   linenomodnamecodefilenamefuncname
sourceliner   s	            r   r4   zFrameTreeItem.GetText7   s    		v	ooj1G ||##<<&&x8
%%'
&$'DDD  --3Z0A AD	Gs   B B	c                     | j                   \  }}g }|j                  |j                  ur2t        d|j                  | j                        }|j                  |       t        d|j                  | j                        }|j                  |       |S )Nz<locals>z	<globals>)r8   rB   f_localsVariablesTreeItemr   r/   )r)   r   rI   r7   r   s        r   r9   zFrameTreeItem.GetSubListI   sm    		v??%..0$ZLDNN4  eootzzJtr   c                     | j                   rb| j                  \  }}|j                  j                  }t        j
                  j                  |      r| j                   j                  ||       y y y r,   )r   r8   rC   rD   ospathisfilegotofileline)r)   r   rI   rL   s       r   OnDoubleClickzFrameTreeItem.OnDoubleClickS   sS    :: IIME6||//Hww~~h'

''&9 ( r   N)r&   r:   r;   r*   r4   r9   rW   r<   r   r   r6   r6   1   s    $:r   r6   c                   $    e Zd Zd Zd Zd Zd Zy)rQ   c                     | j                   S r,   )	labeltextr3   s    r   r4   zVariablesTreeItem.GetText]   s    ~~r   c                      y r,   r<   r3   s    r   GetLabelTextzVariablesTreeItem.GetLabelText`   s    r   c                 2    t        | j                        dkD  S )Nr   )lenobjectr3   s    r   IsExpandablezVariablesTreeItem.IsExpandablec   s    4;;!##r   c                     g }| j                   j                         D ]C  }	 | j                   |   }|| j                   fd}t        |dz   ||      }|j	                  |       E |S # t        $ r Y Sw xY w)Nc                     | ||<   y r,   r<   )valuekeyobject_s      r   setfunctionz1VariablesTreeItem.GetSubList.<locals>.setfunctionm   s    $r   z =)r_   keysKeyErrorr   r/   )r)   r7   rd   rc   rf   r   s         r   r9   zVariablesTreeItem.GetSubListf   s    ;;##% 	!CC( (+DKK %&sTz5+FDNN4 	!   s   A%%	A10A1N)r&   r:   r;   r4   r\   r`   r9   r<   r   r   rQ   rQ   [   s    $r   rQ   c                 b   ddl m} t        j                  |       }|j	                  d       t        t        | j                         j                  d      dd        \  }}|j                  d|dz   |dz   fz          ||      }	 t         y # t        $ r}t        ||||	       Y d }~y d }~ww xY w)
Nr   )PyShellFileListzTest StackViewer+r   z+%d+%d2      )r   r   )idlelib.pyshellrj   r   r   titlemapintgeometrysplitintentional_name_error	NameErrorr   )parentrj   r   xyr   es          r   _stackbrowserrz   t   s    /
++f
CII !sFOO%++C045DAqLLQVQW--.C E3 3S!5c223s   B 	B.B))B.__main__)mainz"idlelib.idle_test.test_stackviewer   F)	verbosityexit)run)NN)rF   rS   tkinterr   idlelib.debugobjr   r   idlelib.treer   r   r   r   r   r6   rQ   rz   r&   unittestr|   idlelib.idle_test.htestr   r<   r   r   <module>r      sr     	  @ ; ;H 6':H ':T 2
3 z	-G+ r   