Sindbad~EG File Manager
�
&Μgc@���ddlZddl�ddlmZmZddlmZddlmZdZ ejjejje
�e �Zejj!e�reZ n'ejj!e �sede �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�N� t�}ddl}|jtjj |j|�d��}|j
�g}dx}}|D]�}tjjtjj|��d}t||��} |j| �t|| dd��}
|
j||��t||��}
|
j|dz|��|dz}|d k\s��|d
z}d}��||_
y)Nrz*.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���1�
�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}|�|jn|}|jt|d�y)Nr������units�break) � EventType�
MouseWheel�delta�ButtonPress�num�type�widget�yview�SCROLL)�eventr9�up�liness r*�wheel_eventr?;si��� �
�
����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�Zd�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)rr) 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`|jj�}|s|dzS|D]:}|j|j||�}|j
j|��<|dz}||z}d} |j
D]�}|} |jj|dz|dz||dzd��|j||�}|jj�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| ddd�
��_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�Z�eZdZ d�Zd�Zd�ZdZd�Zd�Zd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�Zy)�TreeItemc��yrPr�rfs r*rNzTreeItem.__init__Ws��7r,c��yrPr�rfs r*r�zTreeItem.GetTextZs��,r,c��yrPr�rfs r*r�zTreeItem.GetLabelText]s��Lr,Nc�^� |j�|j�|_|jSrP)�
expandable�IsExpandablerfs r*rpzTreeItem._IsExpandablebs)��3��?�?�"�"�/�/�1�D�O����r,c�� y)Nr
r�rfs r*r�zTreeItem.IsExpandablehs��0�r,c�^� |j�sgS|j�}|sd|_|S)Nr)r��
GetSubListr�)rMr�s r*r�zTreeItem._GetSubListls1��3�� � �"��I��/�/�#����D�O��r,c��yrPr�rfs r*r�zTreeItem.IsEditableu���;r,c��yrPr�)rMrs r*r�zTreeItem.SetTextxs��9r,c��yrPr�rfs r*r�zTreeItem.GetIconName{r�r,c��yrPr�rfs r*r�zTreeItem.GetSelectedIconName~s��@r,c��yrPr�rfs r*r�zTreeItem.GetSubList����3r,c��yrPr�rfs r*rmzTreeItem.OnDoubleClick�r�r,)r�r�r�rNr�r�r�rpr�r�r�r�r�r�r�rmr�r,r*r�r�NsL���8�-�M��J����<�:�<�A�4�4r,r�c�8�eZdZ d�Zd�Zd�Zd�Zd�Zd�Zd�Z y) �FileTreeItemc��||_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�listdirrrr�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�rNr�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|��|_|jjddd��t|jd� �|_ |jjddd
��t|jdd�
�|_
|jjddd��|jj|jd<|jj|jd<|jj|jd<|jj|jd<|jjd|j�|jjd|j �|jjd|j"�|jjd|j$�|jjdt&�|jj(dk(r@|jjdt&�|jjdt&�|jjd|j*�|jj-�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>)rr�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
r3r2r4r`s r*r-zScrolledCanvas.page_down������� � ��F�+�r,c�<�|jjdd�y)Nr��unitr2r4r`s r*r.zScrolledCanvas.unit_up�r6r,c�<�|jjdd�y)Nr
r:r2r4r`s r*r/zScrolledCanvas.unit_down�r8r,c�B�tj|j�y)Nr2)rr0rr`s r*r0zScrolledCanvas.zoom_height�s�����t�{�{�+�r,N) r�r�r�rNr,r-r.r/r0r�r,r*rr�s �� �8����r,rc��t|�}tt|j�j d�dd�\}}|jd|dz|dzfz�t|ddd��}|jjdd 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_widgetrN�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�rrrNr��unittestrP�idlelib.idle_test.htestrSr�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