OwlCyberSecurity - MANAGER
Edit File: sidebar.cpython-37.pyc
B ����� f5������������������@���s����d�Z�ddlZddlZddlZddlmZ�ddlmZ�dd��Z dd��Z G�d d ��d �ZG�dd��de�ZG�d d��de�Z dd��Zedkr�ddlmZ�edddd��ddlmZ�ee��dS�)z�Line numbering implementation for IDLE as an extension. Includes BaseSideBar which can be extended for other sidebar based extensions �����N)�idleConf)� Delegatorc�������������C���s���t�t|��d���S�)z:Utility to get the last line's number in a Tk text widget.zend-1c)�int�float�index)�text��r����4/opt/alt/python37/lib64/python3.7/idlelib/sidebar.py�get_end_linenumber���s����r ���c�������������C���s����|�����}|dkr|����}n |dkr,|����}ntd|�����tt|�jj|d�|��d�|��d�g��}tt|�jj|d�|��d�|��d�g��}||fS�)z;Get the total padding of a Tk widget, including its border.�pack�gridzUnsupported geometry manager: �padxZborder�pady) Z winfo_managerZ pack_infoZ grid_info� ValueError�sum�map�tkZgetintZcget)ZwidgetZmanager�infor ���r���r���r���r ����get_widget_padding���s���� r���c���������������@���sh���e�Zd�ZdZdd��Zdd��Zdd��Zdd ��Zd d��Zdd ��Z dd��Z dd��Zdd��Zdd��Z dd��ZdS�)�BaseSideBarz@ The base class for extensions which require a sidebar. c���������� ���C���sx���||�_�|j|�_|j|�_t|�j�\}}tj|�jdtjd|ddd�|�_|�jj tj d��|�j|�jd<�|�����|�� ���d|�_d�S�)N��������r���)�width�wrapr ���r���ZborderwidthZhighlightthickness)�stateZyscrollcommandF)�editwin� text_frame�parentr���r���r����Text�NONE�sidebar_text�config�DISABLED�redirect_yscroll_event�update_font� update_colors�is_shown)�selfr���Z_padxr���r���r���r ����__init__/���s����zBaseSideBar.__init__c�������������C���s���t��|�jdd�}|��|��dS�)z;Update the sidebar text font, usually after config changes.�main�EditorWindowN)r����GetFontr����_update_font)r'����fontr���r���r ���r$���?���s����zBaseSideBar.update_fontc�������������C���s���||�j�d<�d�S�)Nr-���)r ���)r'���r-���r���r���r ���r,���D���s����zBaseSideBar._update_fontc�������������C���s*���t��t����d�}|�j|d�|d�d��dS�)z=Update the sidebar text colors, usually after config changes.Znormal� foreground� background)r.���r/���N)r����GetHighlight�CurrentTheme�_update_colors)r'����colorsr���r���r ���r%���G���s���� zBaseSideBar.update_colorsc�������������C���s���|�j�j|||||d��d�S�)N)ZfgZbgZselectforegroundZselectbackgroundZinactiveselectbackground)r ���r!���)r'���r.���r/���r���r���r ���r2���M���s����zBaseSideBar._update_colorsc�������������C���s$���|�j�s |�jjddtjd��d|�_�d�S�)Nr���r���)�row�column�stickyT)r&���r ���r���r����NSEW)r'���r���r���r ����show_sidebarT���s����zBaseSideBar.show_sidebarc�������������C���s���|�j�r|�j����d|�_�d�S�)NF)r&���r ���Zgrid_forget)r'���r���r���r ����hide_sidebarY���s���� zBaseSideBar.hide_sidebarc�������������O���s"���|�j�jj|���|�j�|d���dS�)zmRedirect vertical scrolling to the main editor text widget. The scroll bar is also updated. r����break)r����vbar�setr ����yview_moveto)r'����args�kwargsr���r���r ���r#���^���s����z"BaseSideBar.redirect_yscroll_eventc�������������C���s���|�j�����dS�)z8Redirect focus-in events to the main editor text widget.r:���)r���� focus_set)r'����eventr���r���r ����redirect_focusin_eventg���s���� z"BaseSideBar.redirect_focusin_eventc�������������C���s"���|�j�����|�j�j|d|jd��dS�)z<Redirect mouse button events to the main editor text widget.r���)�x�yr:���)r���r@����event_generaterD���)r'���rA���� event_namer���r���r ����redirect_mousebutton_eventl���s���� z&BaseSideBar.redirect_mousebutton_eventc�������������C���s���|�j�jdd|j|jd��dS�)z7Redirect mouse wheel events to the editwin text widget.z<MouseWheel>r���)rC���rD����deltar:���)r���rE���rD���rH���)r'���rA���r���r���r ����redirect_mousewheel_eventr���s����z%BaseSideBar.redirect_mousewheel_eventN)�__name__� __module__�__qualname__�__doc__r(���r$���r,���r%���r2���r8���r9���r#���rB���rG���rI���r���r���r���r ���r���+���s��� r���c���������������@���s,���e�Zd�ZdZdd��Zd dd�Zd dd�ZdS�)�EndLineDelegatorz\Generate callbacks with the current end line number after insert or delete operationsc�������������C���s���t��|���||�_dS�)z� changed_callback - Callable, will be called after insert or delete operations with the current end line number. N)r���r(����changed_callback)r'���rO���r���r���r ���r(���|���s���� zEndLineDelegator.__init__Nc�������������C���s$���|�j��|||��|��t|�j����d�S�)N)�delegate�insertrO���r ���)r'���r����charsZtagsr���r���r ���rQ�������s����zEndLineDelegator.insertc�������������C���s"���|�j��||��|��t|�j����d�S�)N)rP����deleterO���r ���)r'���Zindex1Zindex2r���r���r ���rS�������s����zEndLineDelegator.delete)N)N)rJ���rK���rL���rM���r(���rQ���rS���r���r���r���r ���rN���y���s��� rN���c���������������@���s0���e�Zd�ZdZdd��Zdd��Zdd��Zdd ��Zd S�)�LineNumbersz(Line numbers support for editor windows.c�������������C���s����t��|�|��d|�_t|�jd��|�_|�jjtjd��|�j� ddd��|�jjtj d��|�jjddd��|�jjdtjd ��|�� ���t|�j�}|��|��t|�j�}|�|�jjj��|�jj�|��|�jjj}x||k r�|����|j}q�W�d|�_d�S�) Nr���r���)r���rQ����1� linenumberF)Z takefocusZexportselection)Zjustify)r���r(����prev_end�typer ����_sidebar_width_typer!���r����NORMALrQ���r"���Z tag_configZRIGHT�bind_eventsr ���r����update_sidebar_textrN���Zsetdelegater���ZundorP���Zper�topZ resetcacher&���)r'���r����endZend_line_delegatorZ delegatorr���r���r ���r(�������s&���� zLineNumbers.__init__c����������������s@���j��d�j���j��d�j���fdd�}xzdD�]r}x6d|��d�d|��d�d |��d �fD�]}|||d��qZW�x4d|��d�d |��d�fD�]}||d|��d�d��q�W�q2W�d��d������fdd�}�j��d|�����fdd�}�j��d|����fdd��������fdd�}�j��d|�������fdd�}�j��d|��d�S�)Nz <FocusIn>z<MouseWheel>c����������������s"���t�j��j|d�}��j�|�|��d�S�)N)rF���)� functools�partialrG���r ����bind)rF����target_event_nameZhandler)r'���r���r ����bind_mouse_event����s����z1LineNumbers.bind_events.<locals>.bind_mouse_event)r���������������z<Button-�>z<ButtonRelease-z<Bz-Motion>)rb���z<Double-Button-z<Triple-Button-c����������������sl���t�t��j�d|�j������}��j�ddd����j�d|��d�|d���d�����j�d|d���d���|�d�S�)Nz@0,�selz1.0r^���z.0r���rQ���) r���r���r ���r���rD���r���� tag_remove�tag_add�mark_set)rA����lineno)r'���� start_liner���r ����b1_mousedown_handler����s ���� z5LineNumbers.bind_events.<locals>.b1_mousedown_handlerz <Button-1>c����������������s���d��d���d��d�S�)Nr���)rA���)�last_y� last_yviewrm���r���r ����b1_mouseup_handler����s����z3LineNumbers.bind_events.<locals>.b1_mouseup_handlerz<ButtonRelease-1>c����������������s����t�t��j�d|�������}t�|g�\}}��j�ddd����j�d|��d�|d���d�����j�d||krn|n|d���d���dS�) z6Helper function for drag and selection event handlers.z@0,rh���z1.0r^���z.0r���rQ���N) r���r���r ���r����sortedr���ri���rj���rk���)Zy_coordrl����a�b)r'���rm���r���r ����%drag_update_selection_and_insert_mark����s���� zFLineNumbers.bind_events.<locals>.drag_update_selection_and_insert_markc����������������sJ���|�j���j����d���kr*�j���ks<n��j��d�����|�j���d�S�)Nr���)rD���r ����yviewZwinfo_heightr���r=���)rA���r>���)ru���ro���rp���r'���r���r ����b1_drag_handler����s ���� z0LineNumbers.bind_events.<locals>.b1_drag_handlerz<B1-Motion>c����������������s:����d�krd�S��j����}|�kr6�j�|d��������d�S�)Nr���)r ���rv���r���r=���)rA���rv���)ru���ro���rp���r'���r���r ����selection_handler ��s���� z2LineNumbers.bind_events.<locals>.selection_handlerz <<Selection>>)r ���ra���rB���rI���)r'���rc���ZbuttonrF���rn���rq���rw���rx���r���)ru���ro���rp���r'���rm���r ���r[�������s.���� zLineNumbers.bind_eventsc�������������C���s*���t��t����d�}|�j|d�|d�d��dS�)z=Update the sidebar text colors, usually after config changes.rV���r.���r/���)r.���r/���N)r���r0���r1���r2���)r'���r3���r���r���r ���r%�����s���� zLineNumbers.update_colorsc�������������C���s����||�j�krdS�tt|��tt|�j����}|rVtt|�jd���}||�}|��|�|�jd<�|�jjtj d��||�j�kr�d� t�dgt tt|�j�d�|d�����}|�j�d|d��n|�j�|d���d �d��|�jjtjd��||�_�dS�) 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���� ��r���zend -1crV���z.0 -1c)rW����len�strr���r���r ���rY���r!���r���rZ����join� itertools�chainr����rangerQ���rS���r"���)r'���r^���Zwidth_differenceZ cur_widthZ new_widthZnew_textr���r���r ���r\�����s ���� zLineNumbers.update_sidebar_textN)rJ���rK���rL���rM���r(���r[���r%���r\���r���r���r���r ���rT�������s ���jrT���c���������� ���C���s����ddl�m}�t�|��}t�|�}|jtjtjdd��|jddd��|j ddd��t �|dd�}tj|d d tj |d�}|jddtjd��||�}t�|�|_t|�}|����|�d d�dd��tdd�D�����d�S�)Nr���)� Dummy_editwinT)ZsideZfill�expandr���)Zweightr)���r*����P�������)r���Zheightr���r-���)r4���r5���r6���z1.0ry���c�������������s���s���|�]}d�|�V��qdS�)rs���Nr���)�.0�ir���r���r ���� <genexpr>M��s����z._linenumbers_drag_scrolling.<locals>.<genexpr>�e���)Zidlelib.idle_test.test_sidebarr����r���ZToplevelZFramer���ZLEFTZBOTHZrowconfigureZcolumnconfigurer���r+���r���r���r���r7���Z Scrollbarr;���rT���r8���rQ���r}���r����)r���r����Ztoplevelr���r-���r���r���Zlinenumbersr���r���r ����_linenumbers_drag_scrolling:��s���� r�����__main__)r)���zidlelib.idle_test.test_sidebarr���F)� verbosity�exit)�run)rM���r_���r~���Ztkinterr���Zidlelib.configr���Zidlelib.delegatorr���r ���r���r���rN���rT���r����rJ���Zunittestr)���Zidlelib.idle_test.htestr����r���r���r���r ����<module>���s"���N�-