Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.129.23.169
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : sidebar.cpython-310.pyc
o

_b�O�@sdZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Z
dd�Zd	d
�Zdd�Zd
d�Zejdd��ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Zdd�Zedkr�ddlmZedd d!d"�dd#lmZee�dSdS)$z�Line numbering implementation for IDLE as an extension.
Includes BaseSideBar which can be extended for other sidebar based extensions
�N)�Font)�idleConf)�	Delegator)�macosxcCs|�|�}|r
tt|��SdS)z7Return the line number of an index in a Tk text widget.N)�index�int�float)�textrZ
text_index�r
�8/usr/local/python-3.10/lib/python3.10/idlelib/sidebar.py�
get_linenos
rcCs
t|d�S)z7Return the number of the last line in a Tk text widget.zend-1c)r�r	r
r
r�get_end_linenumbers
rcCs*|�|�d�|�d�d�}|r|dSdS)z@Display height, in lines, of a logical line in a Tk text widget.z
 linestartz lineendZdisplaylinesr)�count)r	r�resr
r
r�get_displayliness
�rcCs�|��}|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)Zwidget�manager�inforrr
r
r�get_widget_padding!s"


�
�rc	cs<�|jtjd�z
dVW|jtjd�dS|jtjd�w)N��state)�	configurerZNORMAL�DISABLEDr
r
r
r�temp_enable_text_widget;s
�"r!c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�BaseSideBarz%A base class for sidebars using Text.cCsB||_|j|_|j|_d|_|��|_|��|��|�	�dS�NF)
�editwin�
text_frame�parentr	�is_shown�init_widgets�main_widget�bind_events�update_font�
update_colors)�selfr$r
r
r�__init__Fs
zBaseSideBar.__init__cC�t�)z<Initialize the sidebar's widgets, returning the main widget.��NotImplementedError�r-r
r
rr(T�zBaseSideBar.init_widgetscCr/)�;Update the sidebar text font, usually after config changes.r0r2r
r
rr+Xr3zBaseSideBar.update_fontcCr/)�=Update the sidebar text colors, usually after config changes.r0r2r
r
rr,\r3zBaseSideBar.update_colorscCr/)z,Layout the widget, always using grid layout.r0r2r
r
rr`r3zBaseSideBar.gridcCs|js|��d|_dSdS)NT)r'rr2r
r
r�show_sidebards
�zBaseSideBar.show_sidebarcCs|jr
|j��d|_dSdSr#)r'r)Zgrid_forgetr2r
r
r�hide_sidebaris

�zBaseSideBar.hide_sidebarcOr/)z8Hook for vertical scrolling for sub-classes to override.r0�r-�args�kwargsr
r
r�
yscroll_eventnr3zBaseSideBar.yscroll_eventcOs|jjj|�|j|i|��S)�mRedirect vertical scrolling to the main editor text widget.

        The scroll bar is also updated.
        )r$�vbar�setr;r8r
r
r�redirect_yscroll_eventrsz"BaseSideBar.redirect_yscroll_eventcCs|j��dS)z8Redirect focus-in events to the main editor text widget.�break)r	�	focus_set�r-�eventr
r
r�redirect_focusin_eventzs
z"BaseSideBar.redirect_focusin_eventcCs"|j��|jj|d|jd�dS)z<Redirect mouse button events to the main editor text widget.r��x�yr@)r	rA�event_generaterG)r-rC�
event_namer
r
r�redirect_mousebutton_events
z&BaseSideBar.redirect_mousebutton_eventcCs|jjdd|j|jd�dS)z7Redirect mouse wheel events to the editwin text widget.�<MouseWheel>r)rFrG�deltar@)r	rHrGrLrBr
r
r�redirect_mousewheel_event�s
�z%BaseSideBar.redirect_mousewheel_eventc	sp�j�jd<�j�d�j��j�d�j��fdd�}dD]5}d|�d�d	|�d�d
|�d�fD]}|||d�q1d
|�d�d|�d�fD]}||d|�d�d�qFqd�d�d���fdd������fdd�}�j�d|����fdd�}�j�d|���fdd�}�j�d|������fdd������fdd�}�j�d|���fdd �}�j�d!|�dS)"NZyscrollcommandz	<FocusIn>rKcs"tj�j|d�}�j�||�dS)N)rI)�	functools�partialrJr)�bind)rI�target_event_name�handlerr2r
r�bind_mouse_event�s�z1BaseSideBar.bind_events.<locals>.bind_mouse_event)����z<Button-�>z<ButtonRelease-z<Bz-Motion>)rQz<Double-Button-z<Triple-Button-cszt�jd|���}t�|g�\}}�j�ddd��j�d|�d�|d�d���j�d||kr3|n|d�d��dS)	z6Helper function for drag and selection event handlers.�@0,�sel�1.0�endz.0��insertN)rr	�sortedZ
tag_removeZtag_addZmark_set)Zy_coord�lineno�a�b)r-�
start_liner
r�%drag_update_selection_and_insert_mark�s �zFBaseSideBar.bind_events.<locals>.drag_update_selection_and_insert_markcs0tt�j�d|j������|j��|j�dS)NrY)rrr	rrG�rC)rd�last_yr-rcr
r�b1_mousedown_handler�sz5BaseSideBar.bind_events.<locals>.b1_mousedown_handlerz
<Button-1>cs d�d��jjdd|jd�dS)N�<ButtonRelease-1>rrE)r	rHrGre)rfr-rcr
r�b1_mouseup_handler�sz3BaseSideBar.bind_events.<locals>.b1_mouseup_handlerrhcs �durdS|j��|j�dS�N�rGre)rdrfr
r�b1_drag_handler�sz0BaseSideBar.bind_events.<locals>.b1_drag_handlerz<B1-Motion>cs��}|dur�j���d�dS|dkr"�j�d|d��|�n|�j��kr;�j�d|�j��d��|��j�d���dS)z6Mimic Text auto-scrolling when dragging outside of it.Nr���Zpixelsr]�2)r)�after_cancelr	Zyview_scrollZwinfo_height�afterrk)�auto_scrolling_after_idrdrfr-�text_auto_scrollr
rrr�s
��z1BaseSideBar.bind_events.<locals>.text_auto_scrollcs$�dur|j��j�d���dSdS)Nr)rGr)rpre)rqrfr-rrr
r�b1_leave_handler�s
��z1BaseSideBar.bind_events.<locals>.b1_leave_handlerz
<B1-Leave>cs �dur�j���d�dSdSrj)r)rore)rqr-r
r�b1_enter_handlers�z1BaseSideBar.bind_events.<locals>.b1_enter_handlerz
<B1-Enter>)r?r	r)rPrDrM)	r-rSZbuttonrIrgrirlrsrtr
)rqrdrfr-rcrrrr*�s@


�

�
��		zBaseSideBar.bind_eventsN)�__name__�
__module__�__qualname__�__doc__r.r(r+r,rr6r7r;r?rDrJrMr*r
r
r
rr"Dsr"c@s,eZdZdZdd�Zd	dd�Zd	dd�ZdS)
�EndLineDelegatorz}Generate callbacks with the current end line number.

    The provided callback is called after every insert and delete.
    cCst�|�||_dSrj)rr.�changed_callback)r-rzr
r
rr.s

zEndLineDelegator.__init__NcCs$|j�|||�|�t|j��dSrj)�delegater^rzr)r-r�chars�tagsr
r
rr^szEndLineDelegator.insertcCs"|j�||�|�t|j��dSrj)r{�deleterzr)r-�index1�index2r
r
rr~szEndLineDelegator.deleterj)rurvrwrxr.r^r~r
r
r
rry
s

rycsPeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
�ZS)�LineNumbersz(Line numbers support for editor windows.cs0t��|�t|j�}|jjj||jjd�dS)N�rp)�superr.ry�update_sidebar_textr$�per�insertfilterafterZundo)r-r$Zend_line_delegator��	__class__r
rr.s



�zLineNumbers.__init__c	Cs�t|j�\}}tj|jdtjd|ddd�|_|jjtjd�d|_	t
|jd�|_t|j��|j�
ddd	�Wd�n1sAwY|jjd
d
d�|jjd	tjd�t|j�}|�|�|jS)
Nr]rTr)�width�wraprr�borderwidth�highlightthicknessrr�r^�1�
linenumberF)�	takefocusZexportselection)Zjustify)rr	r�Textr&�NONE�sidebar_text�configr �prev_end�type�_sidebar_width_typer!r^Z
tag_configZRIGHTrr�)r-Z_padxrr\r
r
rr('s ��

zLineNumbers.init_widgetscCs|jjddtjd�dS)Nr]r��row�column�sticky)r�rr�NSEWr2r
r
rr:szLineNumbers.gridcCst�|jdd�}||jd<dS)N�main�EditorWindow�font)r�GetFontr	r�)r-r�r
r
rr+=szLineNumbers.update_fontcCs:t�t��d�}|d}|d}|jj|||||d�dS)r5r��
foreground�
background)Zfg�bgZselectforegroundZselectbackgroundZinactiveselectbackgroundN)r�GetHighlight�CurrentThemer�r�)r-�colorsr�r�r
r
rr,As
�zLineNumbers.update_colorscCs�||jkrdStt|��tt|j��}|r+tt|jd��}||}|�|�|jd<t|j��7||jkrTd�t	�
dgttt|jd|d����}|j�
d|d�n|j�|d�d�d�Wd�n1sjwY||_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]zend -1cr�z.0 -1c)r��len�strrrr�r�r!�join�	itertools�chainr�ranger^r~)r-r\Zwidth_differenceZ	cur_widthZ	new_widthZnew_textr
r
rr�Ls$

���

zLineNumbers.update_sidebar_textcOs|j�|d�dS)Nrr@)r�Zyview_movetor8r
r
rr;gszLineNumbers.yscroll_event)rurvrwrxr.r(rr+r,r�r;�
__classcell__r
r
r�rr�s	r�c@s(eZdZdd�Zddd�Zddd�ZdS)	� WrappedLineHeightChangeDelegatorcCst�|�||_dS)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�r
r
rr.ms

z)WrappedLineHeightChangeDelegator.__init__NcCsLd|v}|rt||�}|j�|||�|r t||�}||kr dS|��dS)Nr�)rr{r^r�)r-rr|r}�is_single_line�before_displaylines�after_displaylinesr
r
rr^vs

z'WrappedLineHeightChangeDelegator.insertcCsf|dur|d}t||�t||�k}|rt||�}|j�||�|r-t||�}||kr-dS|��dS)Nz+1c)rrr{r~r�)r-rr�r�r�r�r
r
rr~�s

z'WrappedLineHeightChangeDelegator.deleterj)rurvrwr.r^r~r
r
r
rr�ls
	r�csleZdZdZ�fdd�Zdd�Z�fdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
�ZS)�ShellSidebarz0Sidebar for the PyShell window, for prompts etc.cszd|_i|_t��|�t|j�}|jjj}|j	|j
ur/|j	|jjjur/|j	}|j	|jjjus$|jjj||d�d|_
dS)Nr�T)�canvas�line_promptsr�r.r��change_callbackr$r��topr{r	Zbottomr�r')r-r$Zchange_delegator�dr�r
rr.�s�
�
zShellSidebar.__init__cCs.tj|jddddd�|_|��|��|jS)N�rF)r�r�r�r�)rZCanvasr&r��update_sidebarrr2r
r
rr(�s
�zShellSidebar.init_widgetscs*t���|j�t��rdnd|j�dS)Nz
<Button-2>z
<Button-3>)r�r*r)rPrZisAquaTk�context_menu_eventr2r�r
rr*�s

�zShellSidebar.bind_eventscsztj�jdd�}t�j�dd��}�fdd�}|jd|d�|r!d	nd
d�|jd|d
�|r/d	nd
d�|�|j|j	�dS)Nr)ZtearoffrZr[cs��fdd�S)Ncs�j���Srj)r	rHr
)�	eventnamer-r
r�<lambda>�sz@ShellSidebar.context_menu_event.<locals>.mkcmd.<locals>.<lambda>r
�r�r2r�r�mkcmd�sz.ShellSidebar.context_menu_event.<locals>.mkcmdZCopyz<<copy>>Znormal�disabled)ZlabelZcommandrzCopy with promptsz<<copy-with-prompts>>r@)
rZMenur)�boolr	Z
tag_nextrangeZadd_commandZtk_popupZx_rootZy_root)r-rCZrmenuZ
has_selectionr�r
r2rr��s
�
�zShellSidebar.context_menu_eventcCs|jjddtjddd�dS)Nr]rrT)r�r�r�rr)r�rrr�r2r
r
rr�szShellSidebar.gridcCs|jr	|��dSdSrj)r'r�r2r
r
rr��s�zShellSidebar.change_callbackcCs�|j}|j}|j}i}|_|�tj�|�d�}|�dd�ddkr+|�|�d��}	|�	|�}|dur7dS|d}||�d��}d|vrHd	nd
|vrNdnd}	|	rk|j
d|tj|	|j|j
d
d�t||�}
|	||
<|�|�d��}q,)Nz@0,0�.r]�0z+1line linestartTz linestart -1c�consolez>>>�stdinz...rTr)�anchorr	r��fillz+1line)r	Z	tag_namesr�r�r~rZALLr�splitZ	dlineinfoZcreate_textZNWr�r�r)r-r	Z
text_tagnamesr�r�rZlineinforGZprev_newline_tagnames�promptr`r
r
rr��s4


��
�zShellSidebar.update_sidebarcOs|��dS)r<r@)r�r8r
r
rr;�szShellSidebar.yscroll_eventcs\t�|jdd�}t|j|d��t�fdd�dD��}|jj|ddd	�||_|��d
S)r4r�r�)r�c3s�|]}��|�VqdSrj)Zmeasure)�.0�char�Ztk_fontr
r�	<genexpr>�s�z+ShellSidebar.update_font.<locals>.<genexpr>)rXr�rUrV)r�N)	rr�r	r�maxr�rr�r�)r-r�Z
char_widthr
r�rr+�szShellSidebar.update_fontcCsTt�t��d�}t�t��d�}|d}|d}||f|_|jj|d�|��dS)r5r�r�r�r�)r�N)rr�r�r�r�rr�)r-Zlinenumbers_colorsZ
prompt_colorsr�r�r
r
rr,�s
zShellSidebar.update_colors)rurvrwrxr.r(r*r�rr�r�r;r+r,r�r
r
r�rr��s		r�c	Cs�ddlm}t�|�}t�|�}|jtjtjdd�|jddd�|j	ddd�t
�|dd�}tj|d	d
tj
|d�}|jddtjd�||�}t�|�|_t|�}|��|�d
d�dd�tdd�D���dS)Nr)�
Dummy_editwinT)Zsider��expandr])Zweightr�r��P�)r�Zheightr�r�r�r[r�css�|]}d|VqdS)raNr
)r��ir
r
rr�s�z._linenumbers_drag_scrolling.<locals>.<genexpr>�e)Zidlelib.idle_test.test_sidebarr�rZToplevelZFramerZLEFTZBOTHZrowconfigureZcolumnconfigurerr�r�r�rr�Z	Scrollbarr=r�r6r^r�r�)r&r�Ztoplevelr%r�r	r$Zlinenumbersr
r
r�_linenumbers_drag_scrollings

&r��__main__)r�zidlelib.idle_test.test_sidebarrTF)�	verbosity�exit)�run)rx�
contextlibrNr��tkinterrZtkinter.fontrZidlelib.configrZidlelib.delegatorrZidlelibrrrrr�contextmanagerr!r"ryr�r�r�r�ruZunittestr�Zidlelib.idle_test.htestr�r
r
r
r�<module>s8
GP)s�
© 2025 GrazzMean