HEX
Server: Apache/2.4.63 (Unix)
System: Linux TOMS-220NAS 4.4.302+ #86009 SMP Wed Nov 26 18:19:17 CST 2025 x86_64
User: flavio87 (1026)
PHP: 8.3.27
Disabled: NONE
Upload Files
File: //proc/25635/task/25635/root/lib/python3.8/idlelib/__pycache__/tree.cpython-38.pyc
U

;ο�{�|�@s0ddlZddlTddlmZmZddlmZddlmZdZ	zej
�ej
�e
�e	�ZWnek
rne	ZYnXej
�e�r�eZ	nej
�e	�s�ede	f��e	fdd	�Zdd
d�ZGdd
�d
�ZGdd�d�ZGdd�de�ZGdd�d�Zdd�Zedk�r,ddlmZedddd�ddlmZee�dS)�N)�*)�Frame�	Scrollbar)�idleConf)�
zoomheightZIconszcan't find icon directory (%r)cCs�t�}ddl}|�tj�|�|�d��}|��g}d}}|D]�}tj�tj�|��d}t	||d�}	|�
|	�t||	ddd�}
|
j||d�t||d	�}
|
j|d|d�|d}|d
kr@|d}d}q@||_
dS)z'Utility to display the available icons.rNz*.gif)�file�master�Zraised)�image�bdZrelief)�row�column)�text�
�)ZTk�glob�os�path�join�escape�sort�splitext�basename�
PhotoImage�append�Label�grid�images)Zicondir�rootr�listrrr
r�namer
�label�r"�7/tmp/_install_python3/usr/lib/python3.8/idlelib/tree.py�	listicons%s&
r$cCsRtj|jdktj|jdki}||jr*dnd}|dkr<|jn|}|�t|d�dS)a6Handle scrollwheel event.

    For wheel up, event.delta = 120*n on Windows, -1*n on darwin,
    where n can be > 1 if one scrolls fast.  Flicking the wheel
    generates up to maybe 20 events with n up to 10 or more 1.
    Macs use wheel down (delta = 1*n) to scroll up, so positive
    delta means to scroll up on both systems.

    X-11 sends Control-Button-4,5 events instead.

    The widget parameter is needed so browser label bindings can pass
    the underlying canvas.

    This function depends on widget.yview to not be overridden by
    a subclass.
    r�����NZunits�break)	Z	EventTypeZ
MouseWheelZdeltaZButtonPressZnum�type�widget�yviewZSCROLL)�eventr*Zup�linesr"r"r#�wheel_event;s�r.c@s�eZdZdd�Zdd�Zdd�Zd*dd	�Zd+d
d�Zdd
�Zdd�Z	d,dd�Z
d-dd�Zd.dd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd/d"d#�Zd0d$d%�Zd1d&d'�Zd2d(d)�ZdS)3�TreeNodecCs:||_||_||_d|_d|_g|_d|_|_i|_dS)N�	collapsedF)	�canvas�parent�item�state�selected�children�x�y�
iconimages)�selfr1r2r3r"r"r#�__init__VszTreeNode.__init__cCs2|jdd�D]}|j�|�|��qd|_dS�N)r6�remove�destroyr2)r:�cr"r"r#r>`s
zTreeNode.destroycCshz|j|WStk
r YnXtj�|�\}}|p8d}tj�t||�}t|j|d�}||j|<|S)Nz.gif)rr)	r9�KeyErrorrrrr�ICONDIRrr1)r:r r�ext�fullnamer
r"r"r#�geticonimagefs
zTreeNode.geticonimageNcCs:|jr
dS|��d|_|j�|j�|��|��dS)NT)r5�deselectallr1�delete�image_id�drawicon�drawtext�r:r,r"r"r#�selectrszTreeNode.selectcCs2|js
dSd|_|j�|j�|��|��dS)NF)r5r1rFrGrHrIrJr"r"r#�deselect{szTreeNode.deselectcCs|jr|j��n|��dSr<)r2rE�deselecttree�r:r"r"r#rE�szTreeNode.deselectallcCs&|jr|��|jD]}|��qdSr<)r5rLr6rM)r:�childr"r"r#rM�s
zTreeNode.deselecttreecCs*|jdkr|��n|��|j��dS)N�expandedr()r4�collapse�expandr3�
OnDoubleClickrJr"r"r#�flip�s



z
TreeNode.flipcCs2|j��sdS|jdkr.d|_|��|��dS)NrP)r3�
_IsExpandabler4�update�viewrJr"r"r#rR�s

zTreeNode.expandcCs|jdkrd|_|��dS)Nr0)r4rVrJr"r"r#rQ�s
zTreeNode.collapsecCs�|jd}|��jd}||}|j�d�}|j��}|j�|�}||krV||krVdS|j�|jd�\}}}	}
||kr�||kr�|||}n|}t|�|
}|j�|�dS)Nr�r�scrollregion)r8�lastvisiblechildr1ZcanvasyZwinfo_heightZ_getints�floatZyview_moveto)r:�topZbottomZheightZvisible_topZvisible_heightZvisible_bottom�x0�y0�x1�y1Zfractionr"r"r#rW�s

z
TreeNode.viewcCs&|jr|jdkr|jd��S|SdS)NrP���)r6r4rZrNr"r"r#rZ�szTreeNode.lastvisiblechildcCs�|jr|j��nj|jd}d|jd<|j��|j�t�|�dd�|j�t�\}}}}|jjdd||fd�||jd<dS)NZcursorZwatch�rr)rY)r2rVr1rFZALL�draw�bbox�	configure)r:Z	oldcursorr]r^r_r`r"r"r#rV�s


zTreeNode.updatecCspd}|||_|_|��|��|jdkr4||S|jsv|j��}|sP|dS|D] }|�|j	||�}|j�
|�qT|d}||}d}	|jD]�}|}	|j	j|d|d||ddd�|�||�}|j�
�r�|jdkr�d	}
|j}n
d
}
|j}|�|
�}|j	j|d|	d|d�}
|j	�|
d|�|j	�|
d
dd��q�|j	j|d|d|d|	ddd�}
|j	�|
�|S)N�rPrXr�	rbZgray50)�fillZ	minusnodeZplusnode)r
�<1>�
<Double-1>cSsdSr<r")r7r"r"r#�<lambda>��zTreeNode.draw.<locals>.<lambda>r)r7r8rHrIr4r6r3�_GetSubList�	__class__r1rZcreate_linercrUrQrRrD�create_image�tag_bindZ	tag_lower)r:r7r8Zdy�sublistr3rOZcx�cyZcylastZiconname�callbackr
�idr"r"r#rc�sF


"


�z
TreeNode.drawcCs~|jr |j��p|j��pd}n|j��p,d}|�|�}|jj|j|jd|d�}||_	|j�
|d|j�|j�
|d|j�dS)NZ
openfolderZfolder�nw)�anchorr
rirj)
r5r3�GetSelectedIconName�GetIconNamerDr1ror7r8rGrprKrT)r:Z	imagenamer
rtr"r"r#rH�s
��
zTreeNode.drawiconc
s��jdd}�jd}�j��}|r��jj||d|d�}�j�|d�j��j�|d�j��j�	|�\}}}}t
|d�d	}�j��p�d
}	z
�jWnt
k
r�Yn
X���z
�jWn*t
k
r�t�j|	dddd
��_YnXt��}
�j�r�j�t�|
d��n�j�t�|
d���jj||d�jd�}�j�d�j��j�d�j��j�d�fdd���j�d�fdd���j�d�fdd��|�_dS)Nrfr	r%ru)rvrrirj��rz	<no text>rr)rrZpadxZpadyZhiliteZnormal)rvZwindow�<MouseWheel>cst|�j�Sr<�r.r1��erNr"r#rkrlz#TreeNode.drawtext.<locals>.<lambda>�
<Button-4>cst|�j�Sr<r{r|rNr"r#rk rl�
<Button-5>cst|�j�Sr<r{r|rNr"r#rk!rl)r7r8r3�GetLabelTextr1Zcreate_textrprKrTrd�max�GetText�entry�AttributeError�edit_finishr!rrZCurrentThemer5reZGetHighlightZ
create_window�bind�select_or_editZtext_id)r:ZtextxZtextyZ	labeltextrtr]r^r_r`rZthemer"rNr#rI�sF

�


�zTreeNode.drawtextcCs*|jr|j��r|�|�n
|�|�dSr<)r5r3�
IsEditable�editrKrJr"r"r#r�$szTreeNode.select_or_editcCsrt|jdddd�|_|j�d|jd�|j�dt�|jjdd�|j��|j�d|j	�|j�d|j
�dS)	Nrr	)r�highlightthickness�widthrr')Zipadxz<Return>z<Escape>)ZEntryr!r��insertZselection_rangeZEND�pack�	focus_setr�r��edit_cancelrJr"r"r#r�*s
z
TreeNode.editcCs~z|j}|`Wntk
r$YdSX|��}|��|rT||j��krT|j�|�|j��}||jd<|��|j	�
�dS)Nr)r�r��getr>r3r��SetTextr!rIr1r�)r:r,r�rr"r"r#r�3s

zTreeNode.edit_finishcCsDz|j}|`Wntk
r$YdSX|��|��|j��dSr<)r�r�r>rIr1r�)r:r,r�r"r"r#r�BszTreeNode.edit_cancel)N)N)N)N)N)N)N)N)N)�__name__�
__module__�__qualname__r;r>rDrKrLrErMrTrRrQrWrZrVrcrHrIr�r�r�r�r"r"r"r#r/Ts(

	




*
%

	
r/c@steZdZdZdd�Zdd�Zdd�ZdZd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TreeItemz�Abstract class representing tree items.

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

    cCsdS)z)Constructor.  Do whatever you need to do.Nr"rNr"r"r#r;VszTreeItem.__init__cCsdS)zReturn text string to display.Nr"rNr"r"r#r�YszTreeItem.GetTextcCsdS)z>Return label text string to display in front of text (if any).Nr"rNr"r"r#r�\szTreeItem.GetLabelTextNcCs|jdkr|��|_|jS)�%Do not override!  Called by TreeNode.N)�
expandable�IsExpandablerNr"r"r#rUas

zTreeItem._IsExpandablecCsdS)z"Return whether there are subitems.r	r"rNr"r"r#r�gszTreeItem.IsExpandablecCs"|��sgS|��}|sd|_|S)r�r)r��
GetSubListr�)r:rqr"r"r#rmkszTreeItem._GetSubListcCsdS)z-Return whether the item's text may be edited.Nr"rNr"r"r#r�tszTreeItem.IsEditablecCsdS)z+Change the item's text (if it is editable).Nr")r:rr"r"r#r�wszTreeItem.SetTextcCsdS)z-Return name of icon to be displayed normally.Nr"rNr"r"r#rxzszTreeItem.GetIconNamecCsdS)z2Return name of icon to be displayed when selected.Nr"rNr"r"r#rw}szTreeItem.GetSelectedIconNamecCsdS)z%Return list of items forming sublist.Nr"rNr"r"r#r��szTreeItem.GetSubListcCsdS)z%Called on a double-click on the item.Nr"rNr"r"r#rS�szTreeItem.OnDoubleClick)r�r�r��__doc__r;r�r�r�rUr�rmr�r�rxrwr�rSr"r"r"r#r�Ms	r�c@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�FileTreeItemz4Example TreeItem subclass -- browse the file system.cCs
||_dSr<)r)r:rr"r"r#r;�szFileTreeItem.__init__cCstj�|j�p|jSr<�rrrrNr"r"r#r��szFileTreeItem.GetTextcCstj�|j�dkS)N�r�rNr"r"r#r��szFileTreeItem.IsEditablecCsltj�|j�}tj�||�}tj�|�tj�|j�kr:dSzt�|j|�||_Wntk
rfYnXdSr<)rr�dirnamer�rename�OSError)r:r�newpathr"r"r#r��s
zFileTreeItem.SetTextcCs|��sdSdS)NZpython)r�rNr"r"r#rx�szFileTreeItem.GetIconNamecCstj�|j�Sr<)rr�isdirrNr"r"r#r��szFileTreeItem.IsExpandablecCsjzt�|j�}Wntk
r(gYSX|jtjjd�g}|D]"}ttj�|j|��}|�|�qB|S)N)�key)	r�listdirrr�r�normcaser�rr)r:�namesrqr r3r"r"r#r��s
zFileTreeItem.GetSubListN)r�r�r�r�r;r�r�r�rxr�r�r"r"r"r#r��sr�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ScrolledCanvascKshd|krd|d<||_t|�|_|jjddd�|jjddd�t|jf|�|_|jjdddd�t|jdd	�|_	|j	jddd
d�t|jddd
�|_
|j
jdddd�|j	j|jd<|jj|j	d<|j
j|jd<|jj
|j
d<|j�d|j�|j�d|j�|j�d|j�|j�d|j�|j�dt�|j�dt�|j�dt�|j�d|j�|j��dS)NZyscrollincrementrXrr	)ZweightZnsew)rr
Zsticky�vbar)r Znse�hbarZ
horizontal)r ZorientZewsZyscrollcommandZcommandZxscrollcommandz<Key-Prior>z
<Key-Next>z<Key-Up>z
<Key-Down>rzr~rz<Alt-Key-2>)rr�frameZrowconfigureZcolumnconfigureZCanvasr1rrr�r��setr+Zxviewr��page_up�	page_down�unit_up�	unit_downr.�zoom_heightr�)r:rZoptsr"r"r#r;�s2
zScrolledCanvas.__init__cCs|j�dd�dS)Nra�pager(�r1Zyview_scrollrJr"r"r#r��szScrolledCanvas.page_upcCs|j�dd�dS)Nr	r�r(r�rJr"r"r#r��szScrolledCanvas.page_downcCs|j�dd�dS)Nra�unitr(r�rJr"r"r#r��szScrolledCanvas.unit_upcCs|j�dd�dS)Nr	r�r(r�rJr"r"r#r��szScrolledCanvas.unit_downcCst�|j�dS)Nr()rr�rrJr"r"r#r��szScrolledCanvas.zoom_heightN)	r�r�r�r;r�r�r�r�r�r"r"r"r#r��sr�cCs�t|�}tt|���d�dd��\}}|�d|d|df�t|dddd�}|jjdd	td
�t	t
�}t|jd|�}|�
�dS)N�+r	z+%d+%d�2�Zwhiter)�bgr�Z	takefocusZboth)rRrhZside)ZToplevel�map�intZgeometry�splitr�r�r�ZLEFTr�rAr/r1rR)r2r\r7r8Zscr3Znoder"r"r#�_tree_widget�s r��__main__)�mainzidlelib.idle_test.test_treerF)�	verbosity�exit)�run)N)rZtkinterZtkinter.ttkrrZidlelib.configrZidlelibrrArrr��__file__Z_icondir�	NameErrorr��RuntimeErrorr$r.r/r�r�r�r�r�Zunittestr�Zidlelib.idle_test.htestr�r"r"r"r#�<module>s4

z<..