
    .hhgO                     H   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  S rS rS rS	 r\ R"                  S
 5       r " S S5      r " S S\
5      r " S S\5      r " S S\
5      r " S S\5      rS r\S:X  a  S SKJr  \" SSSS9  S SKJr  \" \5        gg)    N)Font)idleConf)	Delegator)macosxc                 ^    U R                  U5      nU(       a  [        [        U5      5      $ S $ N)indexintfloat)textr	   
text_indexs      8/opt/python-3.13.8/usr/lib/python3.13/idlelib/sidebar.py
get_linenor      s'    E"J%/3uZ !9T9    c                     [        U S5      $ )Nzend-1c)r   r   s    r   get_end_linenumberr      s    dH%%r   c                 2    U R                  U S3U S3SSS9$ )Nz
 linestartz lineenddisplaylinesT)return_ints)count)r   r	   s     r   get_displaylinesr      s0    ::z*x($$  8 8r   c           
         U R                  5       nUS:X  a  U R                  5       nO%US:X  a  U R                  5       nO[        SU 35      e[	        [        U R                  R                  US   U R                  S5      U R                  S5      /5      5      n[	        [        U R                  R                  US   U R                  S5      U R                  S5      /5      5      nX44$ )NpackgridzUnsupported geometry manager: padxborderpady)	winfo_manager	pack_info	grid_info
ValueErrorsummaptkgetintcget)widgetmanagerinfor   r   s        r   get_widget_paddingr+       s     ""$G&!	F	!9'CDD s699##VFH&  D
 s699##VFH&  D
 :r   c              #      #    U R                  [        R                  S9   S v   U R                  [        R                  S9  g ! U R                  [        R                  S9  f = f7f)Nstate)	configurer%   NORMALDISABLEDr   s    r   temp_enable_text_widgetr2   :   sC     NNN#*R[[)R[[)s   A%A A%A""A%c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)BaseSideBarC   c                     Xl         UR                  U l        UR                  U l        SU l        U R                  5       U l        U R                  5         U R                  5         U R                  5         g NF)
editwin
text_frameparentr   is_showninit_widgetsmain_widgetbind_eventsupdate_fontupdate_colors)selfr8   s     r   __init__BaseSideBar.__init__E   s[    ((LL	,,.r   c                     [         er   NotImplementedErrorrA   s    r   r<   BaseSideBar.init_widgetsS       !!r   c                     [         er   rE   rG   s    r   r?   BaseSideBar.update_fontW   rI   r   c                     [         er   rE   rG   s    r   r@   BaseSideBar.update_colors[   rI   r   c                     [         er   rE   rG   s    r   r   BaseSideBar.grid_   rI   r   c                 V    U R                   (       d  U R                  5         SU l         g g )NT)r;   r   rG   s    r   show_sidebarBaseSideBar.show_sidebarc   s    }}IIK DM r   c                 j    U R                   (       a"  U R                  R                  5         SU l         g g r7   )r;   r=   grid_forgetrG   s    r   hide_sidebarBaseSideBar.hide_sidebarh   s'    ==((*!DM r   c                     [         er   rE   rA   argskwargss      r   yscroll_eventBaseSideBar.yscroll_eventm   rI   r   c                 l    U R                   R                  R                  " U6   U R                  " U0 UD6$ r   )r8   vbarsetr[   rX   s      r   redirect_yscroll_event"BaseSideBar.redirect_yscroll_eventq   s2    
 	t$!!42622r   c                 8    U R                   R                  5         gNbreak)r   	focus_setrA   events     r   redirect_focusin_event"BaseSideBar.redirect_focusin_eventy   s    		r   c                     U R                   R                  5         U R                   R                  USUR                  S9  g)Nr   xyrd   )r   re   event_generaterm   )rA   rg   
event_names      r   redirect_mousebutton_event&BaseSideBar.redirect_mousebutton_event~   s2    				  qEGG <r   c                 d    U R                   R                  SSUR                  UR                  S9  g)N<MouseWheel>r   )rl   rm   deltard   )r   rn   rm   rt   rf   s     r   redirect_mousewheel_event%BaseSideBar.redirect_mousewheel_event   s.    		  #$u{{ 	! 	Dr   c                   ^ ^	^
^^^ T R                   T R                  S'   T R                  R                  ST R                  5        T R                  R                  ST R
                  5        U 4S jnS H?  nSU S3SU S3S	U S
34 H	  nU" X3S9  M     SU S3SU S34 H  nU" USU S3S9  M     MA     S mS mS m	U U4S jm
U
UU U4S jnT R                  R                  SU5        UU U4S jnT R                  R                  SU5        U
U4S jnT R                  R                  SU5        U	U
UU U4S jmU	UU U4S jnT R                  R                  SU5        U	U 4S jnT R                  R                  SU5        g )Nyscrollcommandz	<FocusIn>rs   c                 z   > [         R                  " TR                  US9nTR                  R	                  X5        g )N)ro   )	functoolspartialrp   r=   bind)ro   target_event_namehandlerrA   s      r   bind_mouse_event1BaseSideBar.bind_events.<locals>.bind_mouse_event   s3    ''(G(G3DFG!!*6r   )            z<Button->z<ButtonRelease-z<Bz-Motion>)r}   z<Double-Button-z<Triple-Button-c                 .  > [        TR                  SU  35      n[        TU/5      u  p#TR                  R                  SSS5        TR                  R	                  SU S3US-    S35        TR                  R                  SX:X  a  UOUS-    S35        g )N@0,sel1.0endz.0   insert)r   r   sorted
tag_removetag_addmark_set)y_coordlinenoabrA   
start_lines       r   %drag_update_selection_and_insert_markFBaseSideBar.bind_events.<locals>.drag_update_selection_and_insert_mark   s    		S	?;F:v./DAII  u5IIes"X!A#bz:IIx,2K&VaZ!HKMr   c                    > [        [        TR                  R                  SU R                   35      5      5      mU R                  mT" U R                  5        g )Nr   )r
   r   r   r	   rm   )rg   r   last_yrA   r   s    r   b1_mousedown_handler5BaseSideBar.bind_events.<locals>.b1_mousedown_handler   s@     U499??S	?#CDEJWWF1%'':r   z
<Button-1>c                 X   > S mS mTR                   R                  SSU R                  S9  g )N<ButtonRelease-1>r   rk   )r   rn   rm   )rg   r   rA   r   s    r   b1_mouseup_handler3BaseSideBar.bind_events.<locals>.b1_mouseup_handler   s-    
 JFII$$%8A$Ir   r   c                 J   > Tc  g U R                   mT" U R                   5        g r   )rm   )rg   r   r   s    r   b1_drag_handler0BaseSideBar.bind_events.<locals>.b1_drag_handler   s     ~WWF1%'':r   z<B1-Motion>c                    > Tn U c  TR                   R                  T5        S mg U S:  a(  TR                  R                  SU -   S5        T" U 5        O`U TR                   R	                  5       :  aB  TR                  R                  SU -   TR                   R	                  5       -
  S5        T" U 5        TR                   R                  ST5      mg )Nr   pixelsr   2   )r=   after_cancelr   yview_scrollwinfo_heightafter)rm   auto_scrolling_after_idr   r   rA   text_auto_scrolls    r   r   1BaseSideBar.bind_events.<locals>.text_auto_scroll   s     Ay  --.EF*.'Q		&&rAvx85a8T%%2244		&&q1ut/?/?/L/L/N'N'/15a8  &&r+;< $r   c                 ^   > Tc)  U R                   mTR                  R                  ST5      mg g )Nr   )rm   r=   r   )rg   r   r   rA   r   s    r   b1_leave_handler1BaseSideBar.bind_events.<locals>.b1_leave_handler   s5     '.$$**1.>? ( /r   z
<B1-Leave>c                 H   > Tb  TR                   R                  T5        S mg g r   )r=   r   )rg   r   rA   s    r   b1_enter_handler1BaseSideBar.bind_events.<locals>.b1_enter_handler   s+     '2  --.EF*.' 3r   z
<B1-Enter>)r`   r   r=   r|   rh   ru   )rA   r   buttonro   r   r   r   r   r   r   r   r   r   r   s   `        @@@@@r   r>   BaseSideBar.bind_events   s   &*&A&A		"# 	k4+F+FG 	nd.L.LM	7
 #F!)&3!0:!#F884!
 !J	! "1:!0:!
 !5=fXQ3GI! #" 
  #'	M	; 	; 	l,@A	J 	13EF	; 	m_=	= 	=&	@ 	@ 	l,<=	/ 	l,<=r   )r8   r;   r=   r:   r   N)__name__
__module____qualname____firstlineno__rB   r<   r?   r@   r   rQ   rU   r[   r`   rh   rp   ru   r>   __static_attributes__ r   r   r4   r4   C   sD    """"!
"
"3
|>r   r4   c                   .    \ rS rSrS rSS jrSS jrSrg)EndLineDelegatori	  c                 <    [         R                  " U 5        Xl        g r   )r   rB   changed_callback)rA   r   s     r   rB   EndLineDelegator.__init__  s    4  0r   Nc                     U R                   R                  XU5        U R                  [        U R                   5      5        g r   )delegater   r   r   )rA   r	   charstagss       r   r   EndLineDelegator.insert  s.    U400?@r   c                     U R                   R                  X5        U R                  [        U R                   5      5        g r   )r   deleter   r   )rA   index1index2s      r   r   EndLineDelegator.delete  s,    V,0?@r   )r   r   r   r   r   r   rB   r   r   r   r   r   r   r   r   	  s    
1AAr   r   c                   L   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	rU =r$ )
LineNumbersi  c                    > [         TU ]  U5        [        U R                  5      nU R                  R
                  R                  UU R                  R                  S9  g )Nr   )superrB   r   update_sidebar_textr8   perinsertfilterafterundo)rA   r8   end_line_delegator	__class__s      r   rB   LineNumbers.__init__  sQ    !-d.F.FG 	**+=151B1B 	+ 	Dr   c           
         [        U R                  5      u  p[        R                  " U R                  S[        R
                  SUSSS9U l        U R                  R                  [        R                  S9  SU l	        [        U R                  S   5      U l        [        U R                  5         U R                  R                  SSS	5        S S S 5        U R                  R                  S
S
S9  U R                  R                  S	[        R                  S9  [!        U R                  5      nU R#                  U5        U R                  $ ! , (       d  f       N= f)Nr   r   r   )widthwrapr   r   borderwidthhighlightthicknessr-   r   r   1
linenumberF)	takefocusexportselection)justify)r+   r   r%   Textr:   NONEsidebar_textconfigr1   prev_endtype_sidebar_width_typer2   r   
tag_configRIGHTr   r   )rA   _padxr   r   s       r   r<   LineNumbers.init_widgets&  s
   (3GGDKKqrww)*01aI 	  r{{ 3#'(9(9'(B#C $T%6%67$$XsLA 8  5% H$$\288$D +  %    87s   /E		
Ec                 V    U R                   R                  SS[        R                  S9  g )Nr   r   rowcolumnsticky)r   r   r%   NSEWrG   s    r   r   LineNumbers.grid9  s!    1Qrww?r   c                 d    [         R                  " U R                  SS5      nXR                  S'   g )NmainEditorWindowfont)r   GetFontr   r   )rA   r   s     r   r?   LineNumbers.update_font<  s(    		6>B$(&!r   c                     [         R                  " [         R                  " 5       S5      nUS   nUS   nU R                  R	                  X#X#US9  g )Nr   
foreground
background)fgbgselectforegroundselectbackgroundinactiveselectbackground)r   GetHighlightCurrentThemer   r   )rA   colorsr   r   s       r   r@   LineNumbers.update_colors@  sS    &&x'<'<'>ML)
L)
  '%/ 	! 	
r   c                    XR                   :X  a  g [        [        U5      5      [        [        U R                   5      5      -
  nU(       aC  [        [	        U R
                  S   5      5      nX2-   nU R                  U5      U R
                  S'   [        U R
                  5         XR                   :  am  SR                  [        R                  " S/[        [        [        U R                   S-   US-   5      5      5      5      nU R
                  R                  SUS5        O"U R
                  R                  US-    S3S5        S S S 5        Xl         g ! , (       d  f       N= f)Nr   
 r   zend -1cr   z.0 -1c)r   lenstrr
   r   r   r   r2   join	itertoolschainr$   ranger   r   )rA   r   width_difference	cur_width	new_widthnew_texts         r   r   LineNumbers.update_sidebar_textK  s    --s3x=3s4==/A+BBE$"3"3G"<=>I!4I)-)A)A))LDg&$T%6%67]]"99Y__DU4==1#4cAg>?&  !!((7X|L!!((CE7&)99E 8  87s   #BE
Ec                 @    U R                   R                  US   5        g)Nr   rd   )r   yview_movetorX   s      r   r[   LineNumbers.yscroll_eventf  s    &&tAw/r   )r   r   r   )r   r   r   r   rB   r<   r   r?   r@   r   r[   r   __classcell__r   s   @r   r   r     s-    D!&@)	
6 r   r   c                   .    \ rS rSrS rSS jrSS jrSrg) WrappedLineHeightChangeDelegatorik  c                 <    [         R                  " U 5        Xl        g r   )r   rB   callback)rA   r  s     r   rB   )WrappedLineHeightChangeDelegator.__init__l  s     	4  r   Nc                     SU;  nU(       a  [        X5      nU R                  R                  XU5        U(       a  [        X5      nUW:X  a  g U R                  5         g )Nr  )r   r   r   r  )rA   r	   r   r   is_single_linebefore_displaylinesafter_displayliness          r   r   'WrappedLineHeightChangeDelegator.insertu  sQ    U*"24"?U40!1$!>!%88r   c                     Uc  US-   n[        X5      [        X5      :H  nU(       a  [        X5      nU R                  R                  X5        U(       a  [        X5      nUW:X  a  g U R	                  5         g )Nz+1c)r   r   r   r   r  )rA   r   r   r  r   r!  s         r   r   'WrappedLineHeightChangeDelegator.delete  sg    >e^F#D1Z5MM"24"@V,!1$!?!%88r   )r  r   r   r   r   r   r  r  k  s    !r   r  c                   d   ^  \ rS rSrU 4S jrS rU 4S jrS rS rS r	S r
S	 rS
 rS rSrU =r$ )ShellSidebari  c                    > S U l         0 U l        [        TU ]  U5        [	        U R
                  5      nU R                  R                  R                  nUR                  U R                  Lah  UR                  U R                  R                  R                  La;  UR                  nUR                  U R                  R                  R                  La  M;  U R                  R                  R                  X#S9  SU l        g )Nr   T)canvasline_promptsr   rB   r  change_callbackr8   r   topr   r   bottomr   r;   )rA   r8   change_delegatordr   s       r   rB   ShellSidebar.__init__  s    ! -T-A-AB 	 LL  ::TYY&**DLL$4$4$;$;;JJ **DLL$4$4$;$;;**+;*Er   c                     [         R                  " U R                  SSSSS9U l        U R	                  5         U R                  5         U R                  $ )N   r   F)r   r   r   r   )r%   Canvasr:   r(  update_sidebarr   rG   s    r   r<   ShellSidebar.init_widgets  sC    ii2,-!*/1 			{{r   c                    > [         TU ]  5         U R                  R                  [        R
                  " 5       (       a  SOSU R                  5        g )Nz
<Button-2>z
<Button-3>)r   r>   r=   r|   r   isAquaTkcontext_menu_event)rA   r   s    r   r>   ShellSidebar.bind_events  s<    "OO--L<##	
r   c                 f  ^  [         R                  " T R                  SS9n[        T R                  R                  SS5      5      nU 4S jnUR                  SU" S5      U(       a  SOS	S
9  UR                  SU" S5      U(       a  SOS	S
9  UR                  UR                  UR                  5        g)Nr   )tearoffr   r   c                    >^  U U4S j$ )Nc                  :   > TR                   R                  T 5      $ r   )r   rn   	eventnamerA   s   r   <lambda>@ShellSidebar.context_menu_event.<locals>.mkcmd.<locals>.<lambda>  s    49933I>r   r   r=  s   `r   mkcmd.ShellSidebar.context_menu_event.<locals>.mkcmd  s	    >>r   Copyz<<copy>>normaldisabled)labelcommandr.   zCopy with promptsz<<copy-with-prompts>>rd   )
r%   Menur=   boolr   tag_nextrangeadd_commandtk_popupx_rooty_root)rA   rg   rmenuhas_selectionrA  s   `    r   r7  ShellSidebar.context_menu_event  s    ((!4TYY44UEBC	?"'
"3,9z 	 	K 	 3"'(?"@,9z 	 	K 	u||U\\2r   c                 Z    U R                   R                  SS[        R                  SSS9  g )Nr   r   r   )r   r   r   r   r   )r(  r   r%   r   rG   s    r   r   ShellSidebar.grid  s#    QqqqIr   c                 H    U R                   (       a  U R                  5         g g r   )r;   r3  rG   s    r   r*  ShellSidebar.change_callback  s    ==! r   c           	      v   U R                   nUR                  nU R                  n0 =o@l        UR	                  [
        R                  5        UR                  S5      nUR                  SS5      S   S:w  a  UR                  U S35      nUR                  U5      =nb  US   nU" U S35      nSU;   a  SO	S	U;   a  S
OS n	U	(       aH  UR                  SU[
        R                  U	U R                  U R                  S   S9  [        X5      n
XU
'   UR                  U S35      nUR                  U5      =nb  M  g g )Nz@0,0.r   0z+1line linestartz linestart -1cconsolez>>>stdinz...r   r   )anchorr   r   fillz+1line)r   	tag_namesr(  r)  r   r%   ALLr	   split	dlineinfocreate_textNWr   r  r   )rA   r   text_tagnamesr(  r)  r	   lineinform   prev_newline_tagnamespromptr   s              r   r3  ShellSidebar.update_sidebar  s4   yy+--(bff

6";;sAq!S(JJ%(89:E>>%00x=A$1UG>2J$K!"&;; $99 
 ""1aF(,		A # H#D0'-V$JJ%/0E  >>%00x=r   c                 $    U R                  5         grc   )r*  rX   s      r   r[   ShellSidebar.yscroll_event  s    
 	r   c                   ^ [         R                  " U R                  SS5      n[        U R                  US9m[	        U4S jS 5       5      nU R
                  R                  US-  S-   S9  Xl        U R                  5         g )	Nr   r   )r   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   )measure).0chartk_fonts     r   	<genexpr>+ShellSidebar.update_font.<locals>.<genexpr>  s     F:4..:s   !)r   rW  r   r   )r   )	r   r   r   r   maxr(  r/   r   r*  )rA   r   
char_widthro  s      @r   r?   ShellSidebar.update_font  sj    		6>Btyyt,F:FF
JNQ$67	r   c                 "   [         R                  " [         R                  " 5       S5      n[         R                  " [         R                  " 5       S5      nUS   nUS   nX44U l        U R                  R                  US9  U R                  5         g )Nr   rY  r   r   )r   )r   r  r  r  r(  r/   r*  )rA   linenumbers_colorsprompt_colorsr   r   s        r   r@   ShellSidebar.update_colors  sx    %2283H3H3JLY --h.C.C.EyQ"<0
'5
!.4r   )r(  r  r   r;   r)  )r   r   r   r   rB   r<   r>   r7  r   r*  r3  r[   r?   r@   r   r  r  s   @r   r&  r&    s;    $
J"14 r   r&  c           
         SSK Jn  [        R                  " U 5      n[        R                  " U5      nUR                  [        R                  [        R                  SS9  UR                  SSS9  UR                  SSS9  [        R                  " USS5      n[        R                  " US	S
[        R                  US9nUR                  SS[        R                  S9  U" U5      n[        R                   " U5      Ul        [%        U5      nUR'                  5         UR)                  SSR+                  S [-        SS5       5       5      5        g )Nr   )Dummy_editwinT)sider\  expandr   )weightr   r   P      )r   heightr   r   r   r   r  c              3   ,   #    U  H
  nS U-  v   M     g7f)r   Nr   )rm  is     r   rp  ,_sidebar_number_scrolling.<locals>.<genexpr>  s      >1Qs   e   )idlelib.idle_test.test_sidebarrz  r%   ToplevelFramer   LEFTBOTHrowconfigurecolumnconfigurer   r   r   r   r   r   	Scrollbarr^   r   rQ   r   r  r  )r:   rz  r+  r9   r   r   r8   linenumberss           r   _sidebar_number_scrollingr    s    <
++f
C#JOOrwwtO<Aa(q+C8D77:RtLDII!AbggI.D!G<<
+GLg&KKKtyy >a >>?r   __main__)r   zidlelib.idle_test.test_sidebarr   F)	verbosityexit)run)
contextlibrz   r  tkinterr%   tkinter.fontr   idlelib.configr   idlelib.delegatorr   idlelibr   r   r   r   r+   contextmanagerr2   r4   r   r   r  r&  r  r   unittestr   idlelib.idle_test.htestr  r   r   r   <module>r     s         # ' :&
84 * *C> C>LAy A$M+ M`&y &Rm; m`@, z	)QUC+!" r   