%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/lib/python3.8/idlelib/__pycache__/
Upload File :
Create Path :
Current File : //usr/local/lib/python3.8/idlelib/__pycache__/sidebar.cpython-38.pyc

U

qa5@sdZddlZddlZddlZddlmZddlmZddZ	ddZ
Gd	d
d
ZGdddeZGd
ddeZ
ddZedkrddlmZeddddddlmZeedS)zLine numbering implementation for IDLE as an extension.
Includes BaseSideBar which can be extended for other sidebar based extensions
N)idleConf)	DelegatorcCstt|dS)z:Utility to get the last line's number in a Tk text widget.zend-1c)intfloatindex)textr+/usr/local/lib/python3.8/idlelib/sidebar.pyget_end_linenumbersr
cCs|}|dkr|}n |dkr,|}ntd|tt|jj|d|d|dg}tt|jj|d|d|dg}||fS)z;Get the total padding of a Tk widget, including its border.packgridzUnsupported geometry manager: padxZborderpady)	Z
winfo_managerZ	pack_infoZ	grid_info
ValueErrorsummaptkZgetintZcget)Zwidgetmanagerinfor
rrrr	get_widget_paddings"



rc@sheZdZdZddZddZddZdd	Zd
dZdd
Z	ddZ
ddZddZddZ
ddZdS)BaseSideBarz@
    The base class for extensions which require a sidebar.
    c	Csx||_|j|_|j|_t|j\}}tj|jdtjd|ddd|_|jj	tj
d|j|jd<||
d|_dS)Nr)widthwrapr
rZborderwidthZhighlightthicknessstateZyscrollcommandF)editwin
text_frameparentrrrTextNONEsidebar_textconfigDISABLEDredirect_yscroll_eventupdate_font
update_colorsis_shown)selfrZ_padxrrrr	__init__/szBaseSideBar.__init__cCst|jdd}||dS)z;Update the sidebar text font, usually after config changes.mainEditorWindowN)rGetFontr_update_fontr)fontrrr	r&?szBaseSideBar.update_fontcCs||jd<dS)Nr0)r"r/rrr	r.DszBaseSideBar._update_fontcCs*ttd}|j|d|dddS)=Update the sidebar text colors, usually after config changes.Znormal
foreground
backgroundr2r3NrZGetHighlightZCurrentTheme_update_colorsr)Zcolorsrrr	r'Gs
zBaseSideBar.update_colorscCs|jj|||||ddS)N)ZfgbgZselectforegroundZselectbackgroundZinactiveselectbackground)r"r#)r)r2r3rrr	r6MszBaseSideBar._update_colorscCs$|js |jjddtjdd|_dS)NrrrowcolumnZstickyT)r(r"rrNSEWr)rrr	show_sidebarTszBaseSideBar.show_sidebarcCs|jr|jd|_dS)NF)r(r"Zgrid_forgetr=rrr	hide_sidebarYs
zBaseSideBar.hide_sidebarcOs"|jjj||j|ddS)zmRedirect vertical scrolling to the main editor text widget.

        The scroll bar is also updated.
        rbreak)rvbarsetr"yview_moveto)r)argskwargsrrr	r%^sz"BaseSideBar.redirect_yscroll_eventcCs|jdS)z8Redirect focus-in events to the main editor text widget.r@)r	focus_setr)eventrrr	redirect_focusin_eventgs
z"BaseSideBar.redirect_focusin_eventcCs"|j|jj|d|jddS)z<Redirect mouse button events to the main editor text widget.r)xyr@)rrFevent_generaterK)r)rH
event_namerrr	redirect_mousebutton_eventls
z&BaseSideBar.redirect_mousebutton_eventcCs|jjdd|j|jddS)z7Redirect mouse wheel events to the editwin text widget.<MouseWheel>r)rJrKdeltar@)rrLrKrPrGrrr	redirect_mousewheel_eventrsz%BaseSideBar.redirect_mousewheel_eventN)__name__
__module____qualname____doc__r*r&r.r'r6r>r?r%rIrNrQrrrr	r+s	rc@s,eZdZdZddZd	ddZd
ddZdS)EndLineDelegatorz\Generate callbacks with the current end line number after
       insert or delete operationscCst|||_dS)z
        changed_callback - Callable, will be called after insert
                           or delete operations with the current
                           end line number.
        N)rr*changed_callback)r)rWrrr	r*|s
zEndLineDelegator.__init__NcCs$|j||||t|jdSN)delegateinsertrWr
)r)rcharsZtagsrrr	rZszEndLineDelegator.insertcCs"|j|||t|jdSrX)rYdeleterWr
)r)Zindex1Zindex2rrr	r\szEndLineDelegator.delete)N)N)rRrSrTrUr*rZr\rrrr	rVys	
rVc@s0eZdZdZddZddZddZdd	Zd
S)LineNumbersz(Line numbers support for editor windows.cCst||d|_t|jd|_|jjtjd|j	ddd|jjtj
d|jjddd|jjdtjd	|
t|j}||t|j}||jjj|jj||jjj}||k	r||j}qd|_dS)
NrrrrZ1
linenumberF)Z	takefocusZexportselection)Zjustify)rr*prev_endtyper"_sidebar_width_typer#rNORMALrZr$Z
tag_configZRIGHTbind_eventsr
rupdate_sidebar_textrVZsetdelegaterZundorYZpertopZ
resetcacher()r)rendZend_line_delegatorZ	delegatorrrr	r*s&



zLineNumbers.__init__cs4jdjjdjfdd}dD]j}d|dd|dd	|d
fD]}|||dqVd|dd
|dfD]}||d|ddqq0ddfdd}jd|fdd}jd|fddfdd}jd|fdd}jd|dS)Nz	<FocusIn>rOcs"tjj|d}j||dS)N)rM)	functoolspartialrNr"bind)rMtarget_event_namehandlerr=rr	bind_mouse_eventsz1LineNumbers.bind_events.<locals>.bind_mouse_event)rz<Button->z<ButtonRelease-z<Bz-Motion>)rkz<Double-Button-z<Triple-Button-cslttjd|j}jdddjd|d|ddjd|dd|dS)N@0,sel1.0rg.0rrZ)	rrr"rrKr
tag_removetag_addmark_set)rHlinenor)
start_linerr	b1_mousedown_handlers
 z5LineNumbers.bind_events.<locals>.b1_mousedown_handlerz
<Button-1>csddddSrXr)rH)last_y
last_yviewr{rr	b1_mouseup_handlersz3LineNumbers.bind_events.<locals>.b1_mouseup_handlerz<ButtonRelease-1>csttjd|}t|g\}}jdddjd|d|ddjd||krn|n|dddS)	z6Helper function for drag and selection event handlers.rrrsrtrgrurrZN)	rrr"rsortedrrvrwrx)Zy_coordryabrzrr	%drag_update_selection_and_insert_marks zFLineNumbers.bind_events.<locals>.drag_update_selection_and_insert_markcsJ|jjdkr*jks<njd|jdSNr)rKr"yviewZwinfo_heightrrC)rHrDrr}r~r)rr	b1_drag_handlers

z0LineNumbers.bind_events.<locals>.b1_drag_handlerz<B1-Motion>cs:dkrdSj}|kr6j|ddSr)r"rrrC)rHrrrr	selection_handler
s
z2LineNumbers.bind_events.<locals>.selection_handlerz
<<Selection>>)r"rjrIrQ)r)rmZbuttonrMr|rrrr)rr}r~r)r{r	rds4







	zLineNumbers.bind_eventscCs*ttd}|j|d|dddS)r1r_r2r3r4Nr5r7rrr	r's
zLineNumbers.update_colorscCs||jkrdStt|tt|j}|rVtt|jd}||}|||jd<|jjtj	d||jkrd
tdgt
tt|jd|d}|jd|dn|j|dd	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 linesNrr
rzend -1cr_z.0 -1c)r`lenstrrrr"rbr#rrcjoin	itertoolschainrrangerZr\r$)r)rgZwidth_differenceZ	cur_widthZ	new_widthZnew_textrrr	res"

zLineNumbers.update_sidebar_textN)rRrSrTrUr*rdr'rerrrr	r]s
jr]c	Csddlm}t|}t|}|jtjtjdd|jddd|j	dddt
|dd}tj|d	d
tj
|d}|jddtjd||}t||_t|}||d
dddtddDdS)Nr)
Dummy_editwinT)Zsidefillexpandr)Zweightr+r,P)rZheightrr0r9rtrcss|]}d|VqdS)rNr).0irrr		<genexpr>Msz._linenumbers_drag_scrolling.<locals>.<genexpr>e)Zidlelib.idle_test.test_sidebarrrZToplevelZFramerZLEFTZBOTHZrowconfigureZcolumnconfigurerr-r r!rr<Z	ScrollbarrAr]r>rZrr)rrZtoplevelrr0rrZlinenumbersrrr	_linenumbers_drag_scrolling:s

r__main__)r+zidlelib.idle_test.test_sidebarrF)	verbosityexit)run)rUrhrtkinterrZidlelib.configrZidlelib.delegatorrr
rrrVr]rrRZunittestr+Zidlelib.idle_test.htestrrrrr	<module>s"N-

Zerion Mini Shell 1.0