Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/idlelib/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/idlelib/__pycache__/tree.cpython-312.pyc

�

&Μgc@���ddlZddl�ddlmZmZddlmZddlmZdZ		ejjejje
�e	�Zejj!e�reZ	n'ejj!e	�sede	�d���e	fd	�Zdd
�ZGd�d�ZGd
�d�ZGd�de�ZGd�d�Zd�Zedk(r ddlmZeddd��ddlmZee�yy#e$re	ZY��wxYw)�N)�*)�Frame�	Scrollbar)�idleConf)�
zoomheight�Iconszcan't find icon directory (�)c�L�t�}ddl}|jtjj	|j|�d��}|j
�g}dx}}|D]�}tjjtjj|��d}t||��}	|j|	�t||	dd��}
|
j||��t||�	�}
|
j|dz|��|dz}|d
k\s��|dz}d}��||_
y)z'Utility to display the available icons.rNz*.gif)�file�master��raised)�image�bd�relief)�row�column)�text�
�)�Tk�glob�os�path�join�escape�sort�splitext�basename�
PhotoImage�append�Label�grid�images)�icondir�rootr�listr$rrr�namer�labels           �)/usr/local/lib/python3.12/idlelib/tree.py�	listiconsr+%s���
�4�D���9�9�R�W�W�\�\�$�+�+�g�"6��@�A�D��I�I�K�
�F���C�&����w�w������ 0� 0�� 6�7��:����T�2���
�
�e���d�%�A�h�?��
�
�
�s�6�
�*��d��&��
�
�
�s�1�u�V�
�,��!����R�<��a�%�C��F���D�K�c���tj|jdkDtj|jdk(i}||j
rdnd}|�|jn|}|jt|d�y)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������units�break)	�	EventType�
MouseWheel�delta�ButtonPress�num�type�widget�yview�SCROLL)�eventr9�up�liness    r*�wheel_eventr?;sd��"�
�
����a��
�
�
����a��
1�B��U�Z�Z�.�B�a�E�#�^�U�\�\��F�
�L�L����(�r,c��eZdZd�Zd�Zd�Zdd�Zdd�Zd�Zd�Z	dd	�Z
dd
�Zdd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zdd�Zdd�Zdd�Zdd�Zy)�TreeNodec��||_||_||_d|_d|_g|_dx|_|_i|_y)N�	collapsedF)	�canvas�parent�item�state�selected�children�x�y�
iconimages)�selfrDrErFs    r*�__init__zTreeNode.__init__VsA����������	� ��
���
���
���������r,c��|jddD]-}|jj|�|j��/d|_y�N)rI�remove�destroyrE)rM�cs  r*rRzTreeNode.destroy`s9�����q�!�A��M�M� � ��#�
�I�I�K�"���r,c�.�	|j|S#t$rYnwxYwtjj	|�\}}|xsd}tjjt||z�}t|j|��}||j|<|S)Nz.gif)rr)	rL�KeyErrorrrrr�ICONDIRr rD)rMr(r�ext�fullnamers      r*�geticonimagezTreeNode.geticonimagefs���	��?�?�4�(�(���	��	���G�G�$�$�T�*�	��c��m�V���7�7�<�<�����4���$�+�+�H�=�� %�������s��	�Nc���|jry|j�d|_|jj|j�|j�|j
�y)NT)rH�deselectallrD�delete�image_id�drawicon�drawtext�rMr<s  r*�selectzTreeNode.selectrsG���=�=��������
������4�=�=�)��
�
���
�
�r,c��|jsyd|_|jj|j�|j	�|j�y)NF)rHrDr\r]r^r_r`s  r*�deselectzTreeNode.deselect{s;���}�}����
������4�=�=�)��
�
���
�
�r,c�r�|jr|jj�y|j�yrP)rEr[�deselecttree�rMs r*r[zTreeNode.deselectall�s%���;�;��K�K�#�#�%����r,c�~�|jr|j�|jD]}|j��yrP)rHrcrIre)rM�childs  r*rezTreeNode.deselecttree�s,���=�=��M�M�O��]�]�E���� �#r,c��|jdk(r|j�n|j�|jj	�y)N�expandedr2)rG�collapse�expandrF�
OnDoubleClickr`s  r*�flipz
TreeNode.flip�s3���:�:��#��M�M�O��K�K�M��	�	���!�r,c��|jj�sy|jdk7r(d|_|j�|j	�yy)Nrj)rF�
_IsExpandablerG�update�viewr`s  r*rlzTreeNode.expand�s?���y�y�&�&�(���:�:��#�#�D�J��K�K�M��I�I�K�$r,c�R�|jdk7rd|_|j�yy)NrC)rGrqr`s  r*rkzTreeNode.collapse�s#���:�:��$�$�D�J��K�K�M�%r,c���|jdz
}|j�jdz}||z
}|jjd�}|jj	�}|jj|�}||kr||kry|jj|jd�\}}}	}
||k\r||kr	||z|z
}n|}t
|�|
z}|jj|�y)Nr�r�scrollregion)rK�lastvisiblechildrD�canvasy�winfo_height�_getints�float�yview_moveto)rM�top�bottom�height�visible_top�visible_height�visible_bottom�x0�y0�x1�y1�fractions            r*rrz
TreeNode.view�s����f�f�q�j���&�&�(�*�*�R�/���#����k�k�)�)�!�,�����1�1�3�����,�,�^�<���#��&�N�":�����-�-�d�k�k�.�.I�J���B��B��+��&�N�":��V�|�n�4�H��H���?�R�'����� � ��*r,c�v�|jr,|jdk(r|jdj�S|S)Nrj���)rIrGrwrfs r*rwzTreeNode.lastvisiblechild�s1���=�=�T�Z�Z�:�5��=�=��$�5�5�7�7��Kr,c���|jr|jj�y|jd}d|jd<|jj�|jjt�|jdd�|jj
t�\}}}}|jjdd||f��||jd<y)N�cursor�watch�rr)rv)rErqrDr\�ALL�draw�bbox�	configure)rM�	oldcursorr�r�r�r�s      r*rqzTreeNode.update�s����;�;��K�K��� ����H�-�I�$+�D�K�K��!��K�K��� ��K�K���s�#��I�I�a��O�!�[�[�-�-�c�2�N�B��B���K�K�!�!��1�b�"�~�!�>�$-�D�K�K��!r,c��d}||c|_|_|j�|j�|jdk7r||zS|j
s`|jj�}|s|dzS|D]:}|j|j||�}|j
j|��<|dz}||z}d}	|j
D]�}|}	|jj|dz|dz||dzd��|j||�}|jj�s�[|jdk(rd	}
|j}nd
}
|j}|j!|
�}|jj#|dz|	dz|��}
|jj%|
d|�|jj%|
d
d����|jj|dz|dz|dz|	dzd��}
|jj'|
�|S)N�rjrur�	r��gray50)�fill�	minusnode�plusnode)r�<1>�
<Double-1>c��yrP�)rJs r*�<lambda>zTreeNode.draw.<locals>.<lambda>�s��r,r)rJrKr^r_rGrIrF�_GetSubList�	__class__rDr!�create_liner�rprkrlrY�create_image�tag_bind�	tag_lower)rMrJrK�dy�sublistrFrh�cx�cy�cylast�iconname�callbackr�ids              r*r�z
TreeNode.draw�s���
���A�������
�
���
�
���:�:��#��r�6�M��}�}��i�i�+�+�-�G����t�������t�{�{�D�$�?���
�
�$�$�U�+� ��r�T��
��V�����]�]�E��F��K�K�#�#�A�a�C��A��r�2�a�4�h�#�G����B��#�B��z�z�'�'�)��;�;�*�,�*�H�$�~�~�H�)�H�$�|�|�H��)�)�(�3���[�[�-�-�a��c�6�!�8�5�-�I�����$�$�R���9����$�$�R��~�F�#� �[�[�
$�
$�Q�q�S�!�B�$��!��V�A�X��%���	
�����b�!��	r,c��|jr;|jj�xs|jj�xsd}n|jj�xsd}|j	|�}|j
j
|j|jd|��}||_	|j
j|d|j�|j
j|d|j�y)N�
openfolder�folder�nw)�anchorrr�r�)
rHrF�GetSelectedIconName�GetIconNamerYrDr�rJrKr]r�rarn)rM�	imagenamerr�s    r*r^zTreeNode.drawicon�s����=�=����6�6�8�&����.�.�0�&�%�
��	�	�-�-�/�;�8�I��!�!�)�,��
�[�[�
%�
%�d�f�f�d�f�f�T��
%�
O����
������R�����4������R��t�y�y�9r,c����jdzdz
}�jdz
}�jj�}|r��jj||d|��}�jj
|d�j��jj
|d�j��jj|�\}}}}t|d�d	z}�jj�xsd
}		�j�j�	�jt#j$�}
�j&r0�jj)t#j*|
d��n/�jj)t#j*|
d���jj-||d�j��}�jj/d�j0��jj/d�j��jj/d�fd���jj2dk(r>�jj/d�fd���jj/d�fd��|�_y#t$rY���wxYw#t$r#t!�j|	ddd�
��_Y���wxYw)Nr�r
r.r�)r�rr�r���rz	<no text>rr)rr�padx�pady�hilite�normal)r��window�<MouseWheel>c�0��t|�j�SrP�r?rD��erMs �r*r�z#TreeNode.drawtext.<locals>.<lambda>s���+�a����2Mr,�x11�
<Button-4>c�0��t|�j�SrPr�r�s �r*r�z#TreeNode.drawtext.<locals>.<lambda>!����K��4�;�;�4Or,�
<Button-5>c�0��t|�j�SrPr�r�s �r*r�z#TreeNode.drawtext.<locals>.<lambda>"r�r,)rJrKrF�GetLabelTextrD�create_textr�rarnr��max�GetText�entry�edit_finish�AttributeErrorr)r"r�CurrentThemerHr��GetHighlight�
create_window�bind�select_or_edit�_windowingsystem�text_id)rM�textx�texty�	labeltextr�r�r�r�r�r�themes`          r*r_zTreeNode.drawtext�s0������r�	�!������q����I�I�*�*�,�	�����(�(���d�.7�)�9�B��K�K� � ��U�D�K�K�8��K�K� � ��\�4�9�9�=�!�[�[�-�-�b�1�N�B��B����C�L�2�%�E��y�y� � �"�1�k��	��J�J�
����	M��J�J��%�%�'���=�=��J�J� � ��!6�!6�u�h�!G�H��J�J� � ��!6�!6�u�h�!G�H�
�[�[�
&�
&�u�e�.2�4�:�:�'�G���
�
����t�2�2�3��
�
����d�i�i�0��
�
����(M�N��:�:�&�&�%�/��J�J�O�O�L�*O�P��J�J�O�O�L�*O�P�����-�	��	���	M��t�{�{��!�!�!�L�D�J�	M�s$�:J�J%�	J"�!J"�%(K�Kc��|jr,|jj�r|j|�y|j	|�yrP)rHrF�
IsEditable�editrar`s  r*r�zTreeNode.select_or_edit%s0���=�=�T�Y�Y�1�1�3��I�I�e���K�K��r,c���t|jddd��|_|jjd|jd�|jj	dt
�|jj
d��|jj�|jjd|j�|jjd|j�y)	Nrr
)r�highlightthickness�widthrr0)�ipadxz<Return>z<Escape>)�Entryr)r��insert�selection_range�END�pack�	focus_setr�r��edit_cancelr`s  r*r�z
TreeNode.edit+s����4�:�:�!���K��
��
�
���!�T�Z�Z��/�0��
�
�"�"�1�c�*��
�
���a�� ��
�
�����
�
���
�D�$4�$4�5��
�
���
�D�$4�$4�5r,c��	|j}|`|j�}|j�|r8||jj�k7r|jj
|�|jj�}||jd<|j�|jj�y#t$rYywxYw)Nr)r�r��getrRrFr��SetTextr)r_rDr�)rMr<r�rs    r*r�zTreeNode.edit_finish4s���	��J�J�E��
��y�y�{��
�
�
���D�D�I�I�-�-�/�/��I�I���d�#��y�y� � �"��!��
�
�6���
�
����������	��	�s�B>�>	C
�	C
c��	|j}|`|j�|j�|jj�y#t$rYywxYwrP)r�r�rRr_rDr�)rMr<r�s   r*r�zTreeNode.edit_cancelCsM��	��J�J�E��
�	�
�
���
�
���������	�	��	�s�A�	A�ArP)�__name__�
__module__�__qualname__rNrRrYrarcr[rernrlrkrrrwrqr�r^r_r�r�r�r�r�r,r*rArATsh����
��� �!����
+�"�.�(�T:�$�L�6�
 � r,rAc�\�eZdZdZd�Zd�Zd�ZdZd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zy)�TreeItemz�Abstract class representing tree items.

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

    c��y)z)Constructor.  Do whatever you need to do.Nr�rfs r*rNzTreeItem.__init__W��r,c��y)zReturn text string to display.Nr�rfs r*r�zTreeItem.GetTextZr�r,c��y)z>Return label text string to display in front of text (if any).Nr�rfs r*r�zTreeItem.GetLabelText]r�r,Nc�\�|j�|j�|_|jS)�%Do not override!  Called by TreeNode.)�
expandable�IsExpandablerfs r*rpzTreeItem._IsExpandablebs&���?�?�"�"�/�/�1�D�O����r,c��y)z"Return whether there are subitems.r
r�rfs r*r�zTreeItem.IsExpandablehs��r,c�\�|j�sgS|j�}|sd|_|S)r�r)r��
GetSubListr�)rMr�s  r*r�zTreeItem._GetSubListls.��� � �"��I��/�/�#����D�O��r,c��y)z-Return whether the item's text may be edited.Nr�rfs r*r�zTreeItem.IsEditableur�r,c��y)z+Change the item's text (if it is editable).Nr�)rMrs  r*r�zTreeItem.SetTextxr�r,c��y)z-Return name of icon to be displayed normally.Nr�rfs r*r�zTreeItem.GetIconName{r�r,c��y)z2Return name of icon to be displayed when selected.Nr�rfs r*r�zTreeItem.GetSelectedIconName~r�r,c��y)z%Return list of items forming sublist.Nr�rfs r*r�zTreeItem.GetSubList�r�r,c��y)z%Called on a double-click on the item.Nr�rfs r*rmzTreeItem.OnDoubleClick�r�r,)r�r�r��__doc__rNr�r�r�rpr�r�r�r�r�r�r�rmr�r,r*r�r�NsL���8�-�M��J����<�:�<�A�4�4r,r�c�:�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�FileTreeItemz4Example TreeItem subclass -- browse the file system.c��||_yrP)r)rMrs  r*rNzFileTreeItem.__init__�s	����	r,c�p�tjj|j�xs|jSrP�rrrrfs r*r�zFileTreeItem.GetText�s$���w�w����	�	�*�7�d�i�i�7r,c�Z�tjj|j�dk7S)N�rrfs r*r�zFileTreeItem.IsEditable�s ���w�w����	�	�*�b�0�0r,c��tjj|j�}tjj||�}tjj|�tjj|j�k7ry	tj|j|�||_y#t
$rYywxYwrP)rr�dirnamer�rename�OSError)rMr�newpaths   r*r�zFileTreeItem.SetText�s����'�'�/�/�$�)�)�,���'�'�,�,�w��-��
�7�7�?�?�7�#�r�w�w���t�y�y�'A�A��	��I�I�d�i�i��)��D�I���	��	�s�'B=�=	C	�C	c�&�|j�syy)N�python)r�rfs r*r�zFileTreeItem.GetIconName�s��� � �"��#r,c�T�tjj|j�SrP)rr�isdirrfs r*r�zFileTreeItem.IsExpandable�s���w�w�}�}�T�Y�Y�'�'r,c�V�	tj|j�}|j	tjj
��g}|D]F}t
tjj|j|��}|j|��H|S#t$rgcYSwxYw)N)�key)	r�listdirrrr�normcaserrr!)rM�namesr�r(rFs     r*r�zFileTreeItem.GetSubList�s���	��J�J�t�y�y�)�E�	�
�
����)�)�
�*����D�������T�Y�Y�� =�>�D��N�N�4� ������	��I�	�s�B�B(�'B(N)r�r�r�rrNr�r�r�r�r�r�r�r,r*rr�s(��>��8�1�	��(�
r,rc�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�ScrolledCanvasc���d|vrd|d<||_t|�|_|jjdd��|jj	dd��t|jfi|��|_|jjddd��t|jd�	�|_	|jjddd
��t|jdd�
�|_
|jjddd��|jj|jd<|jj|jd<|jj|jd<|jj|jd<|jjd|j�|jjd|j �|jjd|j"�|jjd|j$�|jjdt&�|jj(dk(r@|jjdt&�|jjdt&�|jjd|j*�|jj-�y)N�yscrollincrementrurr
)�weight�nsew)rr�sticky�vbar)r(�nse�hbar�
horizontal)r(�orient�ews�yscrollcommand�command�xscrollcommandz<Key-Prior>z
<Key-Next>z<Key-Up>z
<Key-Down>r�r�r�r�z<Alt-Key-2>)rr�frame�rowconfigure�columnconfigure�CanvasrDr#rrr �setr:�xviewr��page_up�	page_down�unit_up�	unit_downr?r��zoom_heightr�)rMr�optss   r*rNzScrolledCanvas.__init__�s���T�)�')�D�#�$�����6�]��
��
�
����!��,��
�
�"�"�1�Q�"�/��T�Z�Z�0�4�0��������Q�q���8��d�j�j�v�6��	��	�	���1�Q�u��5��d�j�j�v�l�K��	��	�	���1�Q�u��5�(,�	�	�
�
����$�%�#�{�{�0�0��	�	�)��(,�	�	�
�
����$�%�#�{�{�0�0��	�	�)�����������5�������t�~�~�6�������T�\�\�2�������t�~�~�6��������5��;�;�'�'�5�0��K�K���\�;�7��K�K���\�;�7��������(8�(8�9������r,c�<�|jjdd�y)Nr��pager2�rD�yview_scrollr`s  r*r-zScrolledCanvas.page_up������� � ��V�,�r,c�<�|jjdd�y)Nr
r4r2r5r`s  r*r.zScrolledCanvas.page_down������� � ��F�+�r,c�<�|jjdd�y)Nr��unitr2r5r`s  r*r/zScrolledCanvas.unit_up�r7r,c�<�|jjdd�y)Nr
r;r2r5r`s  r*r0zScrolledCanvas.unit_down�r9r,c�B�tj|j�y)Nr2)rr1rr`s  r*r1zScrolledCanvas.zoom_height�s�����t�{�{�+�r,N)	r�r�r�rNr-r.r/r0r1r�r,r*rr�s �� �8����r,rc��t|�}tt|j�j	d�dd�\}}|jd|dz|dzfz�t|ddd��}|jjdd	t�
�tt�}t|jd|�}|j�y)N�+r
z+%d+%d�2��whiter)�bgr��	takefocus�both)rlr��side)�Toplevel�map�int�geometry�splitrr'r��LEFTrrVrArDrl)rEr}rJrK�scrF�nodes       r*�_tree_widgetrO�s���
�6�
�C��s�F�O�O�%�+�+�C�0���4�5�D�A�q��L�L��Q�r�T�1�S�5�M�)�*�	���A��	K�B��H�H�M�M���d�M�3��� �D��B�I�I�t�T�*�D��K�K�Mr,�__main__)�mainzidlelib.idle_test.test_treerF)�	verbosity�exit)�runrP)r�tkinter�tkinter.ttkrr�idlelib.configr�idlelibrrVrrr
�__file__�_icondir�	NameErrorr�RuntimeErrorr+r?rAr�rrrOr��unittestrQ�idlelib.idle_test.htestrTr�r,r*�<module>r_s��"
��(�#��
����w�w�|�|�B�G�G�O�O�H�5�w�?�H��7�7�=�=����G�	�����w�	�
�4�W�K�q�A�
B�B���,�2w �w �t74�74�x)�8�)�\,�,�^��z����	&�!�%�@�+������i���H��s�5C6�6D�?D

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists