o
     JAf                     @   s   d dl mZ d dlmZmZmZ e Zde_de_G dd deZ	G dd de	Z
G dd	 d	e	ZG d
d de	ZG dd deZeeeeeeeeeeeeee
iZdddZdd Zedkrwd dlmZ edddd d dlmZ ee dS dS )    )Repr)TreeItemTreeNodeScrolledCanvasd   c                   @   sN   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dS )ObjectTreeItemNc                 C   s   || _ || _|| _d S N)	labeltextobjectsetfunction)selfr	   r
   r    r   '/usr/lib/python3.10/idlelib/debugobj.py__init__   s   
zObjectTreeItem.__init__c                 C   s   | j S r   )r	   r   r   r   r   GetLabelText   s   zObjectTreeItem.GetLabelTextc                 C   s   t | jS r   )myreprreprr
   r   r   r   r   GetText      zObjectTreeItem.GetTextc                 C   s   |   sdS d S )NZpython)IsExpandabler   r   r   r   GetIconName   s   zObjectTreeItem.GetIconNamec                 C   s
   | j d uS r   )r   r   r   r   r   
IsEditable   s   
zObjectTreeItem.IsEditablec                 C   s.   zt |}| | W n   Y d S || _d S r   )evalr   r
   )r   textvaluer   r   r   SetText!   s   
zObjectTreeItem.SetTextc                 C   s   t | j  S r   )dirr
   r   r   r   r   r   )      zObjectTreeItem.IsExpandablec              	   C   sj   t | j}g }|D ])}zt| j|}W n	 ty   Y q	w tt|d ||| jfdd}|| q	|S )Nz =c                 S   s   t ||| S r   )setattrr   keyr
   r   r   r   <lambda>6   r   z+ObjectTreeItem.GetSubList.<locals>.<lambda>)r   r
   getattrAttributeErrormake_objecttreeitemstrappend)r   keyssublistr!   r   itemr   r   r   
GetSubList+   s   

zObjectTreeItem.GetSubListr   )__name__
__module____qualname__r   r   r   r   r   r   r   r+   r   r   r   r   r      s    
r   c                   @   s   e Zd Zdd Zdd ZdS )ClassTreeItemc                 C      dS )NTr   r   r   r   r   r   <      zClassTreeItem.IsExpandablec                 C   sL   t | }t| jjdkrtd| jjd }ntd| jj}|d| |S )N   z__bases__[0] =r   z__bases__ =)r   r+   lenr
   	__bases__r%   insert)r   r)   r*   r   r   r   r+   >   s   

zClassTreeItem.GetSubListN)r,   r-   r.   r   r+   r   r   r   r   r/   ;   s    r/   c                   @      e Zd Zdd ZdS )AtomicObjectTreeItemc                 C   r0   )NFr   r   r   r   r   r   I   r1   z!AtomicObjectTreeItem.IsExpandableN)r,   r-   r.   r   r   r   r   r   r7   H       r7   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )SequenceTreeItemc                 C   s   t | jdkS )Nr   )r3   r
   r   r   r   r   r   M   r   zSequenceTreeItem.IsExpandablec                 C   s   t t| jS r   )ranger3   r
   r   r   r   r   r(   O   r   zSequenceTreeItem.keysc              	   C   sd   g }|   D ])}z| j| }W n	 ty   Y qw || jfdd}td|f ||}|| q|S )Nc                 S   s   | ||< d S r   r   r    r   r   r   r   X   r   z0SequenceTreeItem.GetSubList.<locals>.setfunctionz%r:)r(   r
   KeyErrorr%   r'   )r   r)   r!   r   r   r*   r   r   r   r+   Q   s   zSequenceTreeItem.GetSubListN)r,   r-   r.   r   r(   r+   r   r   r   r   r9   L   s    r9   c                   @   r6   )DictTreeItemc                 C   s*   t | j }z|  W |S    Y |S r   )listr
   r(   sort)r   r(   r   r   r   r(   _   s   
zDictTreeItem.keysN)r,   r-   r.   r(   r   r   r   r   r<   ^   r8   r<   Nc                 C   s*   t |}|tv rt| }nt}|| ||S r   )typedispatchr   )r	   r
   r   tcr   r   r   r%   q   s
   
r%   c           	      C   s   dd l }ddlm} || }|d tt|  ddd  \}}|d|d |d f  |jdd	d
 |	  t
|dddd}|jjddd td|}t|jd |}|  d S )Nr   )ToplevelzTest debug object browser+r2   z+%d+%dr      Zyellow)ZbdbgZwhite)rF   ZhighlightthicknessZ	takefocusZboth)expandfillsys)rI   tkinterrC   titlemapintZgeometrysplitZ	configureZ	focus_setr   framepackr%   r   Zcanvasupdate)	parentrI   rC   topxyZscr*   Znoder   r   r   _object_browserz   s   
 
rV   __main__)mainzidlelib.idle_test.test_debugobj   F)	verbosityexit)runr   )reprlibr   Zidlelib.treer   r   r   r   	maxstringmaxotherr   r/   r7   r9   r<   rM   floatr&   tupler=   dictr?   r@   r%   rV   r,   ZunittestrX   Zidlelib.idle_test.htestr\   r   r   r   r   <module>   s4   
(


	