<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
 f:                 @   s"  d dl Z d dlT d dlmZ d dlmZ d dlmZ dZye j	j
e j	jeeZW n ek
rj   eZY nX e j	jer~eZne j	jesedef efdd	ZG d
d dZG dd dZG dd deZG dd dZdd Zedkrd dlmZ edddd d dlmZ ee dS )    N)*)	Scrollbar)idleConf)
zoomheightZIconszcan't find icon directory (%r)c             C   s   t  }ddl}|jtjj| d}|j  g }d }}x|D ]}tjjtjj|d }t||d}	|j	|	 t
||	ddd}
|
j||d t
||d	}
|
j|d |d |d }|d
kr<|d }d}q<W ||_dS )z'Utility to display the available icons.r   Nz*.gif)filemaster   Zraised)imagebdZrelief)rowcolumn)text
      )ZTkglobospathjoinsortsplitextbasename
PhotoImageappendLabelgridimages)Zicondirrootr   listr   r   r   r   namer	   label r    1/opt/alt/python36/lib64/python3.6/idlelib/tree.py	listicons%   s&    

r"   c               @   s   e Zd Zdd Zdd Zdd Zd*dd	Zd+d
dZdd Zdd Z	d,ddZ
d-d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"d#Zd0d$d%Zd1d&d'Zd2d(d)ZdS )3TreeNodec             C   s:   || _ || _|| _d| _d| _g | _d  | _| _i | _d S )N	collapsedF)	canvasparentitemstateselectedchildrenxy
iconimages)selfr%   r&   r'   r    r    r!   __init__>   s    zTreeNode.__init__c             C   s6   x*| j d d  D ]}| j j| |j  qW d | _d S )N)r*   removedestroyr&   )r.   cr    r    r!   r1   H   s    zTreeNode.destroyc             C   sf   y
| j | S  tk
r   Y nX tjj|\}}|p6d}tjjt|| }t| j|d}|| j |< |S )Nz.gif)r   r   )	r-   KeyErrorr   r   r   r   ICONDIRr   r%   )r.   r   r   Zextfullnamer	   r    r    r!   geticonimageN   s    

zTreeNode.geticonimageNc             C   s:   | j r
d S | j  d| _ | jj| j | j  | j  d S )NT)r)   deselectallr%   deleteimage_iddrawicondrawtext)r.   eventr    r    r!   selectZ   s    zTreeNode.selectc             C   s2   | j s
d S d| _ | jj| j | j  | j  d S )NF)r)   r%   r8   r9   r:   r;   )r.   r<   r    r    r!   deselectc   s    zTreeNode.deselectc             C   s   | j r| j j  n| j  d S )N)r&   r7   deselecttree)r.   r    r    r!   r7   k   s    zTreeNode.deselectallc             C   s*   | j r| j  x| jD ]}|j  qW d S )N)r)   r>   r*   r?   )r.   childr    r    r!   r?   q   s    zTreeNode.deselecttreec             C   s*   | j dkr| j  n| j  | jj  dS )Nexpandedbreak)r(   collapseexpandr'   OnDoubleClick)r.   r<   r    r    r!   flipw   s
    


zTreeNode.flipc             C   s2   | j j sd S | jdkr.d| _| j  | j  d S )NrA   )r'   _IsExpandabler(   updateview)r.   r<   r    r    r!   rD      s    

zTreeNode.expandc             C   s   | j dkrd| _ | j  d S )Nr$   )r(   rH   )r.   r<   r    r    r!   rC      s    
zTreeNode.collapsec             C   s   | j d }| j j d }|| }| jjd}| jj }| jj|}||krV||krVd S | jj| jd \}}}	}
||kr||kr|| | }n|}t||
 }| jj| d S )Nr      r   scrollregion)r,   lastvisiblechildr%   ZcanvasyZwinfo_heightZ_getintsfloatZyview_moveto)r.   topZbottomZheightZvisible_topZvisible_heightZvisible_bottomx0y0x1y1Zfractionr    r    r!   rI      s    

zTreeNode.viewc             C   s&   | j r| jdkr| j d j S | S d S )NrA   r   )r*   r(   rL   )r.   r    r    r!   rL      s    zTreeNode.lastvisiblechildc             C   s   | j r| j j  nj| jd }d| jd< | jj  | jjt | jdd | jjt\}}}}| jjdd||fd || jd< d S )NZcursorZwatch   r   r   )rK   )r&   rH   r%   r8   ZALLdrawbbox	configure)r.   Z	oldcursorrO   rP   rQ   rR   r    r    r!   rH      s    


zTreeNode.updatec             C   sx  d}|| | _ | _| j  | j  | jdkr4|| S | jsz| jj }|sP|d S x(|D ] }| j| j	| |}| jj
| qVW |d }|| }d}	x| jD ]}|}	| j	j|d |d ||d dd |j||}|jj r|jdkrd	}
|j}n
d
}
|j}| j|
}| j	j|d |	d |d}| j	j|d| | j	j|ddd  qW | j	j|d |d |d |	d dd}| j	j| |S )N   rA   rJ   r   	   rT   Zgray50)fillZ	minusnodeZplusnode)r	   z<1>z
<Double-1>c             S   s   d S )Nr    )r+   r    r    r!   <lambda>   s    zTreeNode.draw.<locals>.<lambda>r   )r+   r,   r:   r;   r(   r*   r'   _GetSubList	__class__r%   r   Zcreate_linerU   rG   rC   rD   r6   create_imagetag_bindZ	tag_lower)r.   r+   r,   Zdysublistr'   r@   ZcxZcyZcylastZiconnamecallbackr	   idr    r    r!   rU      sD    


"


zTreeNode.drawc             C   s~   | j r | jj p| jj pd}n| jj p,d}| j|}| jj| j| jd|d}|| _	| jj
|d| j | jj
|d| j d S )NZ
openfolderZfoldernw)anchorr	   z<1>z
<Double-1>)r)   r'   GetSelectedIconNameGetIconNamer6   r%   r^   r+   r,   r9   r_   r=   rF   )r.   Z	imagenamer	   rb   r    r    r!   r:      s    


zTreeNode.drawiconc             C   sf  | j d d }| jd }| jj }|r| jj||d|d}| jj|d| j | jj|d| j | jj	|\}}}}t
|dd	 }| jj pd
}	y
| j W n tk
r   Y n
X | j  y
| j W n* tk
r   t| j|	dddd| _Y nX tj }
| jr| jjtj|
d n| jjtj|
d | jj||d| jd}| jjd| j | jjd| j || _d S )NrX   r      rc   )rd   r   z<1>z
<Double-1>   r   z	<no text>r   r   )r   r
   ZpadxZpadyZhiliteZnormal)rd   Zwindow)r+   r,   r'   GetLabelTextr%   Zcreate_textr_   r=   rF   rV   maxGetTextentryAttributeErroredit_finishr   r   r   ZCurrentThemer)   rW   ZGetHighlightZcreate_windowbindselect_or_editZtext_id)r.   ZtextxZtextyZ	labeltextrb   rO   rP   rQ   rR   r   Zthemer    r    r!   r;      s:    




zTreeNode.drawtextc             C   s*   | j r| jj r| j| n
| j| d S )N)r)   r'   
IsEditableeditr=   )r.   r<   r    r    r!   rp   	  s    zTreeNode.select_or_editc             C   sr   t | jdddd| _| jjd| jd  | jjdt | jjdd | jj  | jjd| j	 | jjd| j
 d S )	Nr   r   )r
   highlightthicknesswidthr      )Zipadxz<Return>z<Escape>)ZEntryr   rl   insertZselection_rangeZENDpack	focus_setro   rn   edit_cancel)r.   r<   r    r    r!   rr     s    
zTreeNode.editc             C   s|   y| j }| ` W n tk
r"   d S X |j }|j  |rR|| jj krR| jj| | jj }|| jd< | j  | j	j
  d S )Nr   )rl   rm   getr1   r'   rk   SetTextr   r;   r%   rx   )r.   r<   rl   r   r    r    r!   rn     s    

zTreeNode.edit_finishc             C   sB   y| j }| ` W n tk
r"   d S X |j  | j  | jj  d S )N)rl   rm   r1   r;   r%   rx   )r.   r<   rl   r    r    r!   ry   '  s    zTreeNode.edit_cancel)N)N)N)N)N)N)N)N)N)__name__
__module____qualname__r/   r1   r6   r=   r>   r7   r?   rF   rD   rC   rI   rL   rH   rU   r:   r;   rp   rr   rn   ry   r    r    r    r!   r#   <   s(   

	



*"

	
r#   c               @   st   e Zd ZdZdd Zdd Zdd ZdZ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d ZdS )TreeItemzAbstract class representing tree items.

    Methods should typically be overridden, otherwise a default action
    is used.

    c             C   s   dS )z)Constructor.  Do whatever you need to do.Nr    )r.   r    r    r!   r/   ;  s    zTreeItem.__init__c             C   s   dS )zReturn text string to display.Nr    )r.   r    r    r!   rk   >  s    zTreeItem.GetTextc             C   s   dS )z>Return label text string to display in front of text (if any).Nr    )r.   r    r    r!   ri   A  s    zTreeItem.GetLabelTextNc             C   s   | j dkr| j | _ | j S )z%Do not override!  Called by TreeNode.N)
expandableIsExpandable)r.   r    r    r!   rG   F  s    

zTreeItem._IsExpandablec             C   s   dS )z"Return whether there are subitems.r   r    )r.   r    r    r!   r   L  s    zTreeItem.IsExpandablec             C   s"   | j  sg S | j }|sd| _|S )z%Do not override!  Called by TreeNode.r   )r   
GetSubListr   )r.   r`   r    r    r!   r\   P  s    zTreeItem._GetSubListc             C   s   dS )z-Return whether the item's text may be edited.Nr    )r.   r    r    r!   rq   Y  s    zTreeItem.IsEditablec             C   s   dS )z+Change the item's text (if it is editable).Nr    )r.   r   r    r    r!   r{   \  s    zTreeItem.SetTextc             C   s   dS )z-Return name of icon to be displayed normally.Nr    )r.   r    r    r!   rf   _  s    zTreeItem.GetIconNamec             C   s   dS )z2Return name of icon to be displayed when selected.Nr    )r.   r    r    r!   re   b  s    zTreeItem.GetSelectedIconNamec             C   s   dS )z%Return list of items forming sublist.Nr    )r.   r    r    r!   r   e  s    zTreeItem.GetSubListc             C   s   dS )z%Called on a double-click on the item.Nr    )r.   r    r    r!   rE   h  s    zTreeItem.OnDoubleClick)r|   r}   r~   __doc__r/   rk   ri   r   rG   r   r\   rq   r{   rf   re   r   rE   r    r    r    r!   r   2  s   	r   c               @   sH   e Zd Z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 )FileTreeItemz4Example TreeItem subclass -- browse the file system.c             C   s
   || _ d S )N)r   )r.   r   r    r    r!   r/   r  s    zFileTreeItem.__init__c             C   s   t jj| jp| jS )N)r   r   r   )r.   r    r    r!   rk   u  s    zFileTreeItem.GetTextc             C   s   t jj| jdkS )N )r   r   r   )r.   r    r    r!   rq   x  s    zFileTreeItem.IsEditablec             C   sl   t jj| j}t jj||}t jj|t jj| jkr:d S yt j| j| || _W n tk
rf   Y nX d S )N)r   r   dirnamer   renameOSError)r.   r   newpathr    r    r!   r{   {  s    
zFileTreeItem.SetTextc             C   s   | j  sdS d S )Npython)r   )r.   r    r    r!   rf     s    zFileTreeItem.GetIconNamec             C   s   t jj| jS )N)r   r   isdir)r.   r    r    r!   r     s    zFileTreeItem.IsExpandablec             C   sj   yt j| j}W n tk
r$   g S X |jt jjd g }x*|D ]"}tt jj| j|}|j| q@W |S )N)key)	r   listdirr   r   r   normcaser   r   r   )r.   namesr`   r   r'   r    r    r!   r     s    
zFileTreeItem.GetSubListN)r|   r}   r~   r   r/   rk   rq   r{   rf   r   r   r    r    r    r!   r   n  s   r   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )ScrolledCanvasc             K   s>  d|krd|d< || _ t|| _| jjddd | jjddd t| jf|| _| jjdddd t| jdd	| _	| j	jddd
d t| jddd| _
| j
jdddd | j	j| jd< | jj| j	d< | j
j| jd< | jj| j
d< | jjd| j | jjd| j | jjd| j | jjd| j | jjd| j | jj  d S )NZyscrollincrementrJ   r   r   )ZweightZnsew)r   r   Zstickyvbar)r   ZnsehbarZ
horizontal)r   ZorientZewsZyscrollcommandZcommandZxscrollcommandz<Key-Prior>z
<Key-Next>z<Key-Up>z
<Key-Down>z<Alt-Key-2>)r   ZFrameframeZrowconfigureZcolumnconfigureZCanvasr%   r   r   r   r   setZyviewZxviewro   page_up	page_downunit_up	unit_downzoom_heightrx   )r.   r   Zoptsr    r    r!   r/     s,    
zScrolledCanvas.__init__c             C   s   | j jdd dS )Nr   pagerB   rS   )r%   yview_scroll)r.   r<   r    r    r!   r     s    zScrolledCanvas.page_upc             C   s   | j jdd dS )Nr   r   rB   )r%   r   )r.   r<   r    r    r!   r     s    zScrolledCanvas.page_downc             C   s   | j jdd dS )Nr   unitrB   rS   )r%   r   )r.   r<   r    r    r!   r     s    zScrolledCanvas.unit_upc             C   s   | j jdd dS )Nr   r   rB   )r%   r   )r.   r<   r    r    r!   r     s    zScrolledCanvas.unit_downc             C   s   t j| j dS )NrB   )r   r   r   )r.   r<   r    r    r!   r     s    zScrolledCanvas.zoom_heightN)	r|   r}   r~   r/   r   r   r   r   r   r    r    r    r!   r     s   r   c             C   s   t | }tt| j jddd  \}}|jd|d |d f  t|dddd}|jjdd	td
 t	t
}t|jd |}|j  d S )N+r   z+%d+%d2      Zwhiter   )Zbgrs   Z	takefocusZboth)rD   rZ   Zside)ZToplevelmapintZgeometrysplitr   r   rw   ZLEFTr   r4   r#   r%   rD   )r&   rN   r+   r,   Zscr'   Znoder    r    r!   _tree_widget  s     r   __main__)mainzidlelib.idle_test.test_treer   F)	verbosityexit)run)r   ZtkinterZtkinter.ttkr   Zidlelib.configr   Zidlelibr   r4   r   r   r   __file__Z_icondir	NameErrorr   RuntimeErrorr"   r#   r   r   r   r   r|   Zunittestr   Zidlelib.idle_test.htestr   r    r    r    r!   <module>   s2   
 w<.*

