a  ze5@sddlZddlZddlZddlmZddlmZddZddZ Gdd d Z Gd d d eZ Gd d d e Z ddZ edkrddlmZeddddddlmZee dS)N)idleConf) DelegatorcCstt|dS)Nzend-1c)intfloatindex)textrC/opt/bitninja-python-dojo/embedded/lib/python3.9/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)Zwidgetmanagerinfor 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 borderwidthZhighlightthicknessstateZyscrollcommandF)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_fontr)fontrrr r&?szBaseSideBar.update_fontcCs||jd<dS)Nr0)r"r/rrr r.DszBaseSideBar._update_fontcCs*ttd}|j|d|dddS)NZnormal foreground backgroundr1r2rZ GetHighlightZ CurrentTheme_update_colorsr)Zcolorsrrr r'Gs zBaseSideBar.update_colorscCs|jj|||||ddS)N)ZfgbgZselectforegroundZselectbackgroundZinactiveselectbackground)r"r#)r)r1r2rrr r5Ms zBaseSideBar._update_colorscCs$|js |jjddtjdd|_dS)NrrrowcolumnZstickyT)r(r"r rNSEWr)rrr show_sidebarTszBaseSideBar.show_sidebarcCs|jr|jd|_dS)NF)r(r"Z grid_forgetr<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_setr)eventrrr redirect_focusin_eventgs z"BaseSideBar.redirect_focusin_eventcCs"|j|jj|d|jddS)Nr)xyr?)rrEevent_generaterJ)r)rG event_namerrr redirect_mousebutton_eventls z&BaseSideBar.redirect_mousebutton_eventcCs|jjdd|j|jddS)N r)rIrJdeltar?)rrKrJrOrFrrr redirect_mousewheel_eventrs z%BaseSideBar.redirect_mousewheel_eventN)__name__ __module__ __qualname__r*r&r.r'r5r=r>r%rHrMrPrrrr r+s rc@s(eZdZddZdddZd ddZdS) EndLineDelegatorcCst|||_dSN)rr*changed_callback)r)rVrrr r*|s zEndLineDelegator.__init__NcCs$|j||||t|jdSrU)delegateinsertrVr )r)rcharstagsrrr rXszEndLineDelegator.insertcCs"|j|||t|jdSrU)rWdeleterVr )r)Zindex1index2rrr r[szEndLineDelegator.delete)N)N)rQrRrSr*rXr[rrrr rTys rTc@s,eZdZddZddZddZddZd S) LineNumberscCst||d|_t|jd|_|jjtjd|j ddd|jjtj d|jjddd|jj dtj d | t|j}||t|j}||jjj|jj||jjj}||ur||j}qd|_dS) NrrrrX1 linenumberF)Z takefocusZexportselection)Zjustify)rr*prev_endtyper"_sidebar_width_typer#rNORMALrXr$Z tag_configZRIGHT bind_eventsr rupdate_sidebar_textrTZ setdelegaterZundorWZpertopZ resetcacher()r)rendZend_line_delegatorZ delegatorrrr r*s&     zLineNumbers.__init__cs4jdjjdjfdd}dD]j}d|dd|dd |d fD]}|||d qVd |dd |dfD]}||d|dd qq0ddfdd}jd|fdd}jd|fddfdd}jd|fdd}jd|dS)Nz rNcs"tjj|d}j||dS)N)rL) functoolspartialrMr"bind)rLtarget_event_namehandlerr<rr bind_mouse_eventsz1LineNumbers.bind_events..bind_mouse_event)rzz)rkz.b1_mousedown_handlerz csddddSrUr)rG)last_y last_yviewryrr b1_mouseup_handlersz3LineNumbers.bind_events..b1_mouseup_handlerzcsttjd|}t|g\}}jdddjd|d|ddjd||krn|n|dddSrr) rrr"rsortedrrtrurv)Zy_coordrwabrxrr %drag_update_selection_and_insert_marks zFLineNumbers.bind_events..drag_update_selection_and_insert_markcsJ|jjdkr*jks.b1_drag_handlerz cs:dur dSj}|kr6j|ddSr)r"rrrB)rGrrrr selection_handler s  z2LineNumbers.bind_events..selection_handlerz <>)r"rjrHrP)r)rmZbuttonrLrzr}rrr)rr{r|r)ryr rds4         zLineNumbers.bind_eventscCs*ttd}|j|d|dddS)Nr_r1r2r3r4r6rrr 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) Nrr rzend -1cr_z.0 -1c)r`lenstrrrr"rbr#rrcjoin itertoolschainrrangerXr[r$)r)rgZwidth_differenceZ cur_widthZ new_widthZnew_textrrr res"  zLineNumbers.update_sidebar_textN)rQrRrSr*rdr'rerrrr r]sjr]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)rZheightrr0r8rsrcss|]}d|VqdS)rNr).0irrr Mz._linenumbers_drag_scrolling..e)Zidlelib.idle_test.test_sidebarrrZToplevelZFramer ZLEFTZBOTHZ rowconfigureZcolumnconfigurerr-r r!r r;Z Scrollbarr@r]r=rXrr)rrZtoplevelrr0rrZ linenumbersrrr _linenumbers_drag_scrolling:s    r__main__)r+zidlelib.idle_test.test_sidebarrF) verbosityexit)run)rhrtkinterrZidlelib.configrZidlelib.delegatorrr rrrTr]rrQZunittestr+Zidlelib.idle_test.htestrrrrr s   N-