Sindbad~EG File Manager

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

�

&ΜgrO��P�dZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Z
d�Zd�Zd	�Zd
�Zej$d��ZGd�d
�ZGd�de�ZGd�de�ZGd�de�ZGd�de�Zd�Zedk(r ddlmZeddd��ddlmZee�yy)z�Line numbering implementation for IDLE as an extension.
Includes BaseSideBar which can be extended for other sidebar based extensions
�N)�Font)�idleConf)�	Delegator)�macosxc�T�|j|�}|rtt|��SdS)z7Return the line number of an index in a Tk text widget.N)�index�int�float)�textr�
text_indexs   �,/usr/local/lib/python3.12/idlelib/sidebar.py�
get_linenors'�����E�"�J�%/�3�u�Z� �!�9�T�9�c��t|d�S)z7Return the number of the last line in a Tk text widget.zend-1c)r�rs r
�get_end_linenumberrs���d�H�%�%rc�F�|j|�d�|�d�d�}|r|dSdS)z@Display height, in lines, of a logical line in a Tk text widget.z
 linestartz lineend�displaylinesr)�count)rr�ress   r
�get_displaylinesrs9��
�*�*��w�j�)��w�h�'�#�%�C��3�q�6��a�rc
���|j�}|dk(r|j�}n$|dk(r|j�}ntd|����t	t|jj|d|jd�|jd�g��}t	t|jj|d|jd�|jd�g��}||fS)z;Get the total padding of a Tk widget, including its border.�pack�gridzUnsupported geometry manager: �padx�border�pady)	�
winfo_manager�	pack_info�	grid_info�
ValueError�sum�map�tk�getint�cget)�widget�manager�inforrs     r
�get_widget_paddingr*!s����"�"�$�G��&�����!��	�F�	����!���9�'��C�D�D��s�6�9�9�#�#��V�����F�����H��&���D�
�s�6�9�9�#�#��V�����F�����H��&���D�
��:�rc#��K�|jtj��	d��|jtj��y#|jtj��wxYw�w)N��state)�	configurer$�NORMAL�DISABLEDrs r
�temp_enable_text_widgetr1;sD�����N�N����N�#�*�
����R�[�[��)�����R�[�[��)�s�!A.�A	�!A.�	"A+�+A.c�^�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zy)�BaseSideBarz%A base class for sidebars using Text.c���||_|j|_|j|_d|_|j�|_|j�|j�|j�y�NF)
�editwin�
text_frame�parentr�is_shown�init_widgets�main_widget�bind_events�update_font�
update_colors)�selfr6s  r
�__init__zBaseSideBar.__init__Fs]������(�(����L�L��	���
��,�,�.��������������rc��t�)z<Initialize the sidebar's widgets, returning the main widget.��NotImplementedError�r?s r
r:zBaseSideBar.init_widgetsT���!�!rc��t�)�;Update the sidebar text font, usually after config changes.rBrDs r
r=zBaseSideBar.update_fontXrErc��t�)�=Update the sidebar text colors, usually after config changes.rBrDs r
r>zBaseSideBar.update_colors\rErc��t�)z,Layout the widget, always using grid layout.rBrDs r
rzBaseSideBar.grid`rErc�L�|js|j�d|_yy)NT)r9rrDs r
�show_sidebarzBaseSideBar.show_sidebards���}�}��I�I�K� �D�M�rc�`�|jr"|jj�d|_yyr5)r9r;�grid_forgetrDs r
�hide_sidebarzBaseSideBar.hide_sidebaris'���=�=����(�(�*�!�D�M�rc��t�)z8Hook for vertical scrolling for sub-classes to override.rB�r?�args�kwargss   r
�
yscroll_eventzBaseSideBar.yscroll_eventnrErc�l�|jjj|�|j|i|��S)�mRedirect vertical scrolling to the main editor text widget.

        The scroll bar is also updated.
        )r6�vbar�setrTrQs   r
�redirect_yscroll_eventz"BaseSideBar.redirect_yscroll_eventrs6��
	��������t�$�!�t�!�!�4�2�6�2�2rc�8�|jj�y)z8Redirect focus-in events to the main editor text widget.�break)r�	focus_set�r?�events  r
�redirect_focusin_eventz"BaseSideBar.redirect_focusin_eventzs���	�	����rc��|jj�|jj|d|j��y)z<Redirect mouse button events to the main editor text widget.r��x�yr[)rr\�event_generaterc)r?r^�
event_names   r
�redirect_mousebutton_eventz&BaseSideBar.redirect_mousebutton_events2���	�	�����	�	� � ��q�E�G�G� �<�rc�j�|jjdd|j|j��y)z7Redirect mouse wheel events to the editwin text widget.�<MouseWheel>r)rbrc�deltar[)rrdrcrir]s  r
�redirect_mousewheel_eventz%BaseSideBar.redirect_mousewheel_event�s.���	�	� � ��#$����u�{�{�	!�	D�rc���	�
���
��j�jd<�jjd�j��jjd�j
��fd�}dD]A}d|�d�d|�d�d	|�d
�fD]}|||���d|�d�d
|�d�fD]}||d|�d�����Cd�d�d�	��fd��
�
���fd�}�jjd|����fd�}�jjd|��
�fd�}�jjd|��	�
���
fd��
�	���
fd�}�jjd|��	�fd�}�jjd|�y)N�yscrollcommandz	<FocusIn>rhc���tj�j|��}�jj	||�y)N)re)�	functools�partialrfr;�bind)re�target_event_name�handlerr?s   �r
�bind_mouse_eventz1BaseSideBar.bind_events.<locals>.bind_mouse_event�s5����'�'��(G�(G�3D�F�G����!�!�*�g�6r)����z<Button-�>z<ButtonRelease-z<Bz-Motion>)rqz<Double-Button-z<Triple-Button-c�0��t�jd|���}t�|g�\}}�jjddd��jj	d|�d�|dz�d���jjd||k(r|n|dz�d��y)	z6Helper function for drag and selection event handlers.�@0,�sel�1.0�endz.0��insertN)rr�sorted�
tag_remove�tag_add�mark_set)�y_coord�lineno�a�br?�
start_lines    ��r
�%drag_update_selection_and_insert_markzFBaseSideBar.bind_events.<locals>.drag_update_selection_and_insert_mark�s������	�	�S��	�?�;�F��:�v�.�/�D�A�q��I�I� � ���u�5��I�I���e��s�"�X�!�A�#��b�z�:��I�I���x�,2�a�K�&�V�a�Z�!H��K�
Mrc���tt�jjd|j������|j��|j�y)Nrz)r	r
rrrc)r^r��last_yr?r�s ����r
�b1_mousedown_handlerz5BaseSideBar.bind_events.<locals>.b1_mousedown_handler�s@����U�4�9�9�?�?�S����	�?�#C�D�E�J��W�W�F�1�%�'�'�:rz
<Button-1>c�^��d�d��jjdd|j��y)N�<ButtonRelease-1>rra)rrdrc)r^r�r?r�s ���r
�b1_mouseup_handlerz3BaseSideBar.bind_events.<locals>.b1_mouseup_handler�s-���
�J��F��I�I�$�$�%8�A����$�Irr�c�H����y|j��|j�y�N)rc)r^r�r�s ��r
�b1_drag_handlerz0BaseSideBar.bind_events.<locals>.b1_drag_handler�s ����~���W�W�F�1�%�'�'�:rz<B1-Motion>c����}|��jj��d�y|dkr(�jjd|zd��|�n_|�jj	�kDrB�jjd|z�jj	�z
d��|��jjd���y)z6Mimic Text auto-scrolling when dragging outside of it.Nr����pixelsr~�2)r;�after_cancelr�yview_scroll�winfo_height�after)rc�auto_scrolling_after_idr�r�r?�text_auto_scrolls �����r
r�z1BaseSideBar.bind_events.<locals>.text_auto_scroll�s�����A��y�� � �-�-�.E�F�*.�'���Q���	�	�&�&�r�A�v�x�8�5�a�8��T�%�%�2�2�4�4��	�	�&�&�q�1�u�t�/?�/?�/L�/L�/N�'N�'/�1�5�a�8�� � �&�&�r�+;�<�
$rc�\����)|j��jjd���yy)Nr)rcr;r�)r^r�r�r?r�s ����r
�b1_leave_handlerz1BaseSideBar.bind_events.<locals>.b1_leave_handler�s5���'�.������$�$�*�*�1�.>�?�(�/rz
<B1-Leave>c�F�����jj��d�yyr�)r;r�)r^r�r?s ��r
�b1_enter_handlerz1BaseSideBar.bind_events.<locals>.b1_enter_handlers+���'�2�� � �-�-�.E�F�*.�'�3rz
<B1-Enter>)rYrr;rpr_rj)r?rs�buttonrer�r�r�r�r�r�r�r�r�r�s`        @@@@@r
r<zBaseSideBar.bind_events�s����&*�&A�&A��	�	�"�#�	
�����k�4�+F�+F�G�	
�����n�d�.L�.L�M�	7�
#�F�!)�&���3�!0����:�!#�F�8�8�4�!�
�!��z�J�	!�"1����:�!0����:�!�
�!��5=�f�X�Q�3G�I�!�#�"�
���#'��	M�	;�	
�����l�,@�A�	J�	
�����1�3E�F�	;�	
�����m�_�=�	=�	=�&	@�	
�����l�,<�=�	/�	
�����l�,<�=rN)�__name__�
__module__�__qualname__�__doc__r@r:r=r>rrLrOrTrYr_rfrjr<�rr
r3r3DsG��/��"�"�"�"�!�
"�
"�3��
��|>rr3c�&�eZdZdZd�Zdd�Zdd�Zy)�EndLineDelegatorz}Generate callbacks with the current end line number.

    The provided callback is called after every insert and delete.
    c�<�tj|�||_yr�)rr@�changed_callback)r?r�s  r
r@zEndLineDelegator.__init__s�����4� � 0��rNc��|jj|||�|jt|j��yr�)�delegaterr�r)r?r�chars�tagss    r
rzEndLineDelegator.inserts0���
�
���U�E�4�0����0����?�@rc��|jj||�|jt|j��yr�)r��deleter�r)r?�index1�index2s   r
r�zEndLineDelegator.deletes.���
�
���V�V�,����0����?�@rr�)r�r�r�r�r@rr�r�rr
r�r�
s���1�A�Arr�c�F��eZdZdZ�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
�xZS)	�LineNumbersz(Line numbers support for editor windows.c����t�|�|�t|j�}|jj
j
||jj��y)N�r�)�superr@r��update_sidebar_textr6�per�insertfilterafter�undo)r?r6�end_line_delegator�	__class__s   �r
r@zLineNumbers.__init__sQ���
����!�-�d�.F�.F�G��	
�����*�*�+=�15���1B�1B�	+�	Drc	���t|j�\}}tj|jdtj
d|dd��|_|jjtj��d|_	t|jd�|_t|j�5|jjddd	�ddd�|jjd
d
��|jjd	tj��t!|j�}|j#|�|jS#1swY��xYw)
Nr~rtr)�width�wraprr�borderwidth�highlightthicknessr,r�r�1�
linenumberF)�	takefocus�exportselection)�justify)r*rr$�Textr8�NONE�sidebar_text�configr0�prev_end�type�_sidebar_width_typer1r�
tag_config�RIGHTrr�)r?�_padxrr}s    r
r:zLineNumbers.init_widgets's��(����3���t��G�G�D�K�K�q�r�w�w�)*��01�a�I���	
��� � �r�{�{� �3���
�#'��(9�(9�'�(B�#C�� �
$�T�%6�%6�
7����$�$�X�s�L�A�8���� � �5�%� �H����$�$�\�2�8�8�$�D� ����+��� � ��%�� � � �8�
7�s�5E�Ec�\�|jjddtj��y)Nr~r��row�column�sticky)r�rr$�NSEWrDs r
rzLineNumbers.grid:s!�������1�Q�r�w�w��?rc�d�tj|jdd�}||jd<y)N�main�EditorWindow�font)r�GetFontrr�)r?r�s  r
r=zLineNumbers.update_font=s*������	�	�6�>�B��$(����&�!rc��tjtj�d�}|d}|d}|jj	|||||��y)rIr��
foreground�
background)�fg�bg�selectforeground�selectbackground�inactiveselectbackgroundN)r�GetHighlight�CurrentThemer�r�)r?�colorsr�r�s    r
r>zLineNumbers.update_colorsAsW���&�&�x�'<�'<�'>��M���L�)�
��L�)�
���� � ��j�'�*�%/�	!�	
rc��||jk(rytt|��tt|j��z
}|rDtt	|j
d��}||z}|j
|�|j
d<t|j
�5||jkDrldjtjdgttt|jdz|dz����}|j
jd|d�n"|j
j|dz�d�d�ddd�||_y#1swY||_yxYw)	z�
        Perform the following action:
        Each line sidebar_text contains the linenumber for that line
        Synchronize with editwin.text so that both sidebar_text and
        editwin.text contain the same number of linesNr��
�r~zend -1cr�z.0 -1c)r��len�strr	r
r�r�r1�join�	itertools�chainr#�rangerr�)r?r}�width_difference�	cur_width�	new_width�new_texts      r
r�zLineNumbers.update_sidebar_textLs%���$�-�-����s�3�x�=�3�s�4�=�=�/A�+B�B����E�$�"3�"3�G�"<�=�>�I�!�$4�4�I�)-�)A�)A�)�)L�D���g�&�
$�T�%6�%6�
7��T�]�]�"��9�9�Y�_�_��D���U�4�=�=�1�#4�c�A�g�>�?�&����!�!�(�(�7�X�|�L��!�!�(�(�C��E�7�&�)9�9�E�8���
�8���
�s
�BE
�
Ec�@�|jj|d�y)Nrr[)r��yview_movetorQs   r
rTzLineNumbers.yscroll_eventgs�����&�&�t�A�w�/�r)r�r�r�r�r@r:rr=r>r�rT�
__classcell__�r�s@r
r�r�s+���2�D�!�&@�)�	
��6rr�c�"�eZdZd�Zdd�Zdd�Zy)� WrappedLineHeightChangeDelegatorc�<�tj|�||_y)z�
        callback - Callable, will be called when an insert, delete or replace
                   action on the text widget may require updating the shell
                   sidebar.
        N)rr@�callback)r?r�s  r
r@z)WrappedLineHeightChangeDelegator.__init__ms��	���4� � ��
rNc��d|v}|rt||�}|jj|||�|rt||�}|k(ry|j�y)Nr�)rr�rr�)r?rr�r��is_single_line�before_displaylines�after_displayliness       r
rz'WrappedLineHeightChangeDelegator.insertvsW���U�*���"2�4��"?���
�
���U�E�4�0��!1�$��!>��!�%8�8���
�
�rc���|�|dz}t||�t||�k(}|rt||�}|jj||�|rt||�}|k(ry|j	�y)Nz+1c)rrr�r�r�)r?r�r�r�r�rs      r
r�z'WrappedLineHeightChangeDelegator.delete�sq���>��e�^�F�#�D�&�1�Z��f�5M�M���"2�4��"@���
�
���V�V�,��!1�$��!?��!�%8�8���
�
�rr�)r�r�r�r@rr�r�rr
r�r�ls��!��rr�c�\��eZdZdZ�fd�Zd�Z�fd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
�xZS)�ShellSidebarz0Sidebar for the PyShell window, for prompts etc.c���d|_i|_t�|�
|�t	|j
�}|jjj}|j|jure|j|jjjur9|j}|j|jjjur�9|jjj||��d|_
y)Nr�T)�canvas�line_promptsr�r@r��change_callbackr6r��topr�r�bottomr�r9)r?r6�change_delegator�dr�s    �r
r@zShellSidebar.__init__�s����������
����!�
-�T�-A�-A�B�	�
�L�L��� � ���:�:�T�Y�Y�&��*�*�D�L�L�$4�$4�$;�$;�;��J�J���*�*�D�L�L�$4�$4�$;�$;�;������*�*�+;�1�*�E���
rc��tj|jdddd��|_|j	�|j�|jS)N�rF)r�r�r�r�)r$�Canvasr8r�update_sidebarrrDs r
r:zShellSidebar.init_widgets�sC���i�i����2�,-�!�*/�1���	
�����	�	���{�{�rc���t�|��|jjt	j
�rdnd|j�y)Nz
<Button-2>z
<Button-3>)r�r<r;rpr�isAquaTk�context_menu_event)r?r�s �r
r<zShellSidebar.bind_events�s9���
���������"�O�O�-�L�<��#�#�	
rc�`��tj�jd��}t�jjdd��}�fd�}|j
d|d�|rdnd	�
�|j
d|d�|rdnd	�
�|j|j|j�y
)Nr)�tearoffr{r|c������fd�S)Nc�:���jj��Sr�)rrd��	eventnamer?s��r
�<lambda>z@ShellSidebar.context_menu_event.<locals>.mkcmd.<locals>.<lambda>�s���4�9�9�3�3�I�>rr�rs`�r
�mkcmdz.ShellSidebar.context_menu_event.<locals>.mkcmd�s	���>�>r�Copyz<<copy>>�normal�disabled)�label�commandr-zCopy with promptsz<<copy-with-prompts>>r[)
r$�Menur;�boolr�
tag_nextrange�add_command�tk_popup�x_root�y_root)r?r^�rmenu�
has_selectionrs`    r
rzShellSidebar.context_menu_event�s��������(�(�!�4���T�Y�Y�4�4�U�E�B�C�
�	?�
����"'�
�"3�,9��z�	�	K�	��� 3�"'�(?�"@�,9��z�	�	K�	���u�|�|�U�\�\�2�rc�`�|jjddtjdd��y)Nr~rrt)r�r�r�rr)rrr$r�rDs r
rzShellSidebar.grid�s#�������Q�q����q�q��Irc�>�|jr|j�yyr�)r9rrDs r
rzShellSidebar.change_callback�s���=�=����!�rc	�h�|j}|j}|j}ix}|_|j	t
j�|jd�}|jdd�ddk7r|j|�d��}|j|�x}��|d}||�d��}d|vrdnd	|vrd
nd}	|	rM|jd|t
j|	|j|jd�
�t||�}
|	||
<|j|�d��}|j|�x}���yy)Nz@0,0�.r~�0z+1line linestartz linestart -1c�consolez>>>�stdinz...rtr)�anchorrr��fillz+1line)r�	tag_namesrrr�r$�ALLr�split�	dlineinfo�create_text�NWr�r�r)r?r�
text_tagnamesrrr�lineinforc�prev_newline_tagnames�promptr�s           r
rzShellSidebar.update_sidebar�s:���y�y�����
�����+-�-��t�(��
�
�b�f�f���
�
�6�"���;�;�s�A��q�!�S�(��J�J�%��(8�9�:�E��>�>�%�0�0�x�=����A�$1�U�G�>�2J�$K�!�"�&;�;�� �$9�9���
�
��"�"�1�a����F�(,�	�	����A��#�H�#�D�%�0��'-��V�$��J�J�%���/�0�E� �>�>�%�0�0�x�=rc�$�|j�y)rVr[)rrQs   r
rTzShellSidebar.yscroll_event�s��
	
����rc���tj|jdd�}t|j|���t	�fd�dD��}|j
j
|dzdz��||_|j�y	)
rGr�r�)r�c3�@�K�|]}�j|����y�wr�)�measure)�.0�char�tk_fonts  �r
�	<genexpr>z+ShellSidebar.update_font.<locals>.<genexpr>�s�����F�:�4�����.�:�s�)rxr,rurv)r�N)	rr�rr�maxrr.r�r)r?r��
char_widthrBs   @r
r=zShellSidebar.update_font�sl�������	�	�6�>�B���t�y�y�t�,���F�:�F�F�
������J��N�Q�$6��7���	����rc�"�tjtj�d�}tjtj�d�}|d}|d}||f|_|jj|��|j
�y)rIr�r.r�r�)r�N)rr�r�r�rr.r)r?�linenumbers_colors�
prompt_colorsr�r�s     r
r>zShellSidebar.update_colors�sz��%�2�2�8�3H�3H�3J�L�Y�� �-�-�h�.C�.C�.E�y�Q�
�"�<�0�
�'��5�
�!�:�.����������4����r)r�r�r�r�r@r:r<rrrrrTr=r>r�r�s@r
rr�s9���:��$�
��J�"�1�4��rrc
��ddlm}tj|�}tj|�}|jtjtjd��|jdd��|jdd��tj|dd�}tj|d	d
tj|��}|jddtj��||�}tj |�|_t%|�}|j'�|j)d
dj+d�t-dd�D���y)Nr)�
Dummy_editwinT)�sider1�expandr~)�weightr�r��P�)r��heightr�r�r�r|r�c3�&K�|]	}d|z���y�w)r�Nr�)r@�is  r
rCz,_sidebar_number_scrolling.<locals>.<genexpr>s���� >�
�1��Q��
�s��e)�idlelib.idle_test.test_sidebarrJr$�Toplevel�Framer�LEFT�BOTH�rowconfigure�columnconfigurerr�r�r�rr��	ScrollbarrWr�rLrr�r�)r8rJrr7r�rr6�linenumberss        r
�_sidebar_number_scrollingr]s���<�
�+�+�f�
�C����#��J��O�O����r�w�w�t�O�<����A�a��(����q���+����C���8�D�
�7�7�:�R�����t�L�D��I�I�!�A�b�g�g�I�.��D�!�G��<�<�
�+�G�L��g�&�K������K�K��t�y�y� >��a��
� >�>�?r�__main__)r�zidlelib.idle_test.test_sidebarrtF)�	verbosity�exit)�run)r��
contextlibrnr��tkinterr$�tkinter.fontr�idlelib.configr�idlelib.delegatorr�idlelibrrrrr*�contextmanagerr1r3r�r�r�rr]r��unittestr��idlelib.idle_test.htestrar�rr
�<module>rks���������#�'��:�&�
 ��4���*��*�C>�C>�LA�y�A�$M�+�M�`&�y�&�Rm�;�m�`@�,�z����	)�Q�U�C�+��!�"�r

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