B B&Lj@sddlZddlZddlZddlmZddlmZddZddZ Gdd d Z Gd d d eZ Gd d d e Z ddZ edkrddlmZeddddddlmZee dS)N)idleConf) DelegatorcCstt|dS)Nzend-1c)intfloatindex)textr2/opt/alt/python37/lib/python3.7/idlelib/sidebar.pyget_end_linenumber sr cCs|}|dkr|}n |dkr,|}ntd|tt|jj|d|d|dg}tt|jj|d|d|dg}||fS)NpackgridzUnsupported geometry manager: padxZborderpady) Z winfo_managerZ pack_infoZ grid_info ValueErrorsummaptkZgetintZcget)ZwidgetZmanagerinfor rrrr get_widget_paddings    rc@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS) BaseSideBarc Csx||_|j|_|j|_t|j\}}tj|jdtjd|ddd|_|jj tj d|j |jd<| | d|_dS)Nr)widthwrapr rZ borderwidthZhighlightthickness)stateZyscrollcommandF)editwin text_frameparentrrrTextNONE sidebar_textconfigDISABLEDredirect_yscroll_event update_font update_colorsis_shown)selfrZ_padxrrrr __init__/s  zBaseSideBar.__init__cCst|jdd}||dS)Nmain EditorWindow)rGetFontr _update_font)r'fontrrr r$?szBaseSideBar.update_fontcCs||jd<dS)Nr-)r )r'r-rrr r,DszBaseSideBar._update_fontcCs*ttd}|j|d|dddS)NZnormal foreground background)r.r/)r GetHighlight CurrentTheme_update_colors)r'colorsrrr r%Gs zBaseSideBar.update_colorscCs|jj|||||ddS)N)ZfgbgZselectforegroundZselectbackgroundZinactiveselectbackground)r r!)r'r.r/rrr r2MszBaseSideBar._update_colorscCs$|js |jjddtjdd|_dS)Nrr)rowcolumnstickyT)r&r r rNSEW)r'rrr show_sidebarTszBaseSideBar.show_sidebarcCs|jr|jd|_dS)NF)r&r Z grid_forget)r'rrr hide_sidebarYs zBaseSideBar.hide_sidebarcOs"|jjj||j|ddS)Nrbreak)rvbarsetr yview_moveto)r'argskwargsrrr r#^sz"BaseSideBar.redirect_yscroll_eventcCs|jdS)Nr;)r focus_set)r'eventrrr redirect_focusin_eventgs z"BaseSideBar.redirect_focusin_eventcCs"|j|jj|d|jddS)Nr)xyr;)rrAevent_generaterE)r'rB event_namerrr redirect_mousebutton_eventls z&BaseSideBar.redirect_mousebutton_eventcCs|jjdd|j|jddS)Nz r)rDrEdeltar;)rrFrErI)r'rBrrr redirect_mousewheel_eventrsz%BaseSideBar.redirect_mousewheel_eventN)__name__ __module__ __qualname__r(r$r,r%r2r9r:r#rCrHrJrrrr r+s rc@s(eZdZddZdddZd ddZdS) EndLineDelegatorcCst|||_dS)N)rr(changed_callback)r'rOrrr r(|s zEndLineDelegator.__init__NcCs$|j||||t|jdS)N)delegateinsertrOr )r'rcharsZtagsrrr rQszEndLineDelegator.insertcCs"|j|||t|jdS)N)rPdeleterOr )r'Zindex1Zindex2rrr rSszEndLineDelegator.delete)N)N)rKrLrMr(rQrSrrrr rNys rNc@s,eZdZddZddZddZddZd S) LineNumberscCst||d|_t|jd|_|jjtjd|j ddd|jjtj d|jjddd|jj dtj d | t|j}||t|j}||jjj|jj||jjj}x||k r||j}qWd|_dS) Nrr)rrQ1 linenumberF)Z takefocusZexportselection)Zjustify)rr(prev_endtyper _sidebar_width_typer!rNORMALrQr"Z tag_configZRIGHT bind_eventsr rupdate_sidebar_textrNZ setdelegaterZundorPZpertopZ resetcacher&)r'rendZend_line_delegatorZ delegatorrrr r(s&       zLineNumbers.__init__cs@jdjjdjfdd}xzdD]r}x6d|dd|dd |d fD]}|||d qZWx4d |dd |dfD]}||d|dd qWq2Wddfdd}jd|fdd}jd|fddfdd}jd|fdd}jd|dS)Nz z cs"tjj|d}j||dS)N)rG) functoolspartialrHr bind)rGtarget_event_nameZhandler)r'rr bind_mouse_eventsz1LineNumbers.bind_events..bind_mouse_event)rzz)rbz.b1_mousedown_handlerz csddddS)Nr)rB)last_y last_yviewrmrr b1_mouseup_handlersz3LineNumbers.bind_events..b1_mouseup_handlerzcsttjd|}t|g\}}jdddjd|d|ddjd||krn|n|dddS)Nz@0,rhz1.0r^z.0rrQ) rrr rsortedrrirjrk)Zy_coordrlab)r'rmrr %drag_update_selection_and_insert_marks  zFLineNumbers.bind_events..drag_update_selection_and_insert_markcsJ|jjdkr*jks)rBr?)rurorpr'rr b1_drag_handlers  z0LineNumbers.bind_events..b1_drag_handlerz cs:dkr dSj}|kr6j|ddS)Nr)r rvrr>)rBrv)rurorpr'rr selection_handler s  z2LineNumbers.bind_events..selection_handlerz <>)r rarCrJ)r'rcZbuttonrGrnrqrwrxr)rurorpr'rmr r[s.       zLineNumbers.bind_eventscCs*ttd}|j|d|dddS)NrVr.r/)r.r/)rr0r1r2)r'r3rrr r%s zLineNumbers.update_colorsc Cs||jkrdStt|tt|j}|rVtt|jd}||}|||jd<|jjtj d||jkrd t dgt tt|jd|d}|jd|dn|j|ddd|jjtjd||_dS) Nr)r rzend -1crVz.0 -1c)rWlenstrrrr rYr!rrZjoin itertoolschainrrangerQrSr")r'r^Zwidth_differenceZ cur_widthZ new_widthZnew_textrrr r\s   zLineNumbers.update_sidebar_textN)rKrLrMr(r[r%r\rrrr rTsjrTc 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)rZheightrr-)r5r6r7z1.0rycss|]}d|VqdS)rsNr).0irrr Msz._linenumbers_drag_scrolling..e)Zidlelib.idle_test.test_sidebarrrZToplevelZFramer ZLEFTZBOTHZ rowconfigureZcolumnconfigurerr+rrr r8Z Scrollbarr<rTr9rQr}r)rrZtoplevelrr-rrZ linenumbersrrr _linenumbers_drag_scrolling:s    r__main__)r)zidlelib.idle_test.test_sidebarrF) verbosityexit)run)r_r~ZtkinterrZidlelib.configrZidlelib.delegatorrr rrrNrTrrKZunittestr)Zidlelib.idle_test.htestrrrrr s   N-