
    .hh"2                         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 SK
Jr  SS jr " S S	\R                  5      r " S
 S5      r\R!                  5         \S:X  a  S SKJr  \" SSSS9  gg)    N)
messagebox)idleConf)	view_text)Hovertip)macosxc                 J   SnSnSnSn[         R                  " SU 5       HW  nUR                  5       U-
  nX7-  nXW-  nX   S:X  a  XQ:  a
  XES-
  U-  -  nUS-  nSnOXRXR-  -
  -  nXQ:  a  US-  nUnUS-  nMY     U[        U 5      U-
  -  nUS:  a  XES-
  U-  -  nU$ US-  nU$ )N   r      z[\t\n]
)refinditerstartlen)s	linewidthtabwidthpos	linecountcurrent_columnmnumcharss           9/opt/python-3.13.8/usr/lib/python3.13/idlelib/squeezer.pycount_lines_with_wrappingr      s     H
CIN[[A&779s?" 6T> ) q0Y>>	NIN .*CDDN )Q	!)q; '@ c!fsl"Nq(Y66	
  	Q	    c                   H    \ rS rSrS rS rSS jrSS jrSS jrSr	S	 r
S
rg)ExpandingButtonT   c                   ^ TU l         X l        X0l        X@l        UR                  =U l        nUR
                  =U l        nUR                  R                  U l        US:w  a  SOSnSU SU S3n[        R                  R                  XUSSS	9  S
n	[        X	SS9  U R                  SU R                  5        [        R                   " 5       (       a  U R                  SU R"                  5        OU R                  SU R"                  5        U R%                  U4S j5        S U l        U R)                  U R*                  5        g )Nr
   lineslinezSqueezed text ( z).z#FFFFC0z#FFFFE0)text
backgroundactivebackgroundz5Double-click to expand, right-click for more options.P   )hover_delayz<Double-Button-1>z
<Button-2>z
<Button-3>c                 J   > T[        U 5      [        U 5      [        U5      -    $ N)int)offsetlengthr   s     r   <lambda>*ExpandingButton.__init__.<locals>.<lambda>z   s    1S[Vs6{1J#Kr   )r   tags
numoflinessqueezereditwinr"   perbottom	base_texttkButton__init__r   bindexpandr   isAquaTkcontext_menu_eventselection_handleis_dangerous
after_idleset_is_dangerous)
selfr   r.   r/   r0   r1   r"   line_pluralitybutton_textbutton_tooltip_texts
    `        r   r7   ExpandingButton.__init___   s   	$ !)!1!11w"<<'	D ++$.!O'
|1^4DBG
		4K&/) 	 	M D 	 	;		%t{{3??IIlD$;$;<IIlD$;$;<K	M !--.r   c                   ^ SU R                   R                  5       -  mU R                  S:  =(       dS    [        U R                  5      S:  =(       d4    [        U4S j[        R                  " SU R                  5       5       5      U l        g )N2   i  iP  c              3   ^   >#    U  H"  n[        UR                  S 5      5      T:  v   M$     g7f)r   N)r   group).0
line_matchdangerous_line_lens     r   	<genexpr>3ExpandingButton.set_is_dangerous.<locals>.<genexpr>   s.      "@J J$$Q'(,>>"@s   *-z[^\n]+)	r"   winfo_widthr/   r   r   anyr   r   r=   )r@   rK   s    @r   r?    ExpandingButton.set_is_dangerous   sm    $))"7"7"99OOd" K% "$++i"@  	r   Nc                    U R                   c  U R                  5         U R                   (       aj  [        R                  " SSR	                  / SQ5      U R
                  [        U R                  5      4-  [        R                  U R                  S9nU(       d  gU R                  R                  U 5      nU R                  R                  X0R                  U R                  5        U R                  R                  U 5        U R                  R!                  X0R                  U R                  5        U R"                  R$                  R'                  U 5        g )NzExpand huge output?z

)z5The squeezed output is very long: %d lines, %d chars.z2Expanding it could make IDLE slow or unresponsive.z5It is recommended to view or copy the output instead.zReally expand?)titlemessagedefaultparentbreak)r=   r?   r   askokcanceljoinr/   r   r   CANCELr"   indexr4   insertr.   deleter1   on_squeezed_expandr0   expandingbuttonsremove)r@   eventconfirmrZ   s       r   r9   ExpandingButton.expand   s     $!!# ,,+ % 
 oos466{34 #))yy	"G 		%eVVTYY7d#''vvtyyA&&--d3r   c                 Z    U R                  5         U R                  U R                  5        g r(   )clipboard_clearclipboard_appendr   r@   r`   s     r   copyExpandingButton.copy   s"    
 	dff%r   c                 F    [        U R                  SU R                  SSS9  g )NzSqueezed Output ViewerFnone)modalwrap)r   r"   r   rf   s     r   viewExpandingButton.view   s     
 	$))5tvvF	,r   ))rg   rg   )rm   rm   c                 T   U R                   R                  SSUR                  UR                  4-  5        [        R
                  " U R                   SS9nU R                   H  u  p4UR                  U[        X5      S9  M      UR                  UR                  UR                  5        g)Nr[   z@%d,%dr   )tearoff)labelcommandrV   )r"   mark_setxyr5   Menurmenu_specsadd_commandgetattrtk_popupx_rooty_root)r@   r`   rmenurq   method_names        r   r;   "ExpandingButton.context_menu_event   s    		8X%''0B%BC		1-"&"2"2EE743MN #3u||U\\2r   )r4   r1   r=   r/   r   r0   r.   r"   r(   )__name__
__module____qualname____firstlineno__r7   r?   r9   rg   rm   rw   r;   __static_attributes__ r   r   r   r   T   s(    /@	
4>&,Kr   r   c                   6    \ rS rSr\S 5       rS rS rS rSr	g)Squeezer   c                 >    [         R                  " SSSSSS9U l        g )NmainPyShellzauto-squeeze-min-linesr)   rF   )typerT   )r   	GetOptionauto_squeeze_min_lines)clss    r   reloadSqueezer.reload   s$     &.%7%7I7&
"r   c                 0  ^ ^ UT l         UR                  =T l        mUR                  R                  T l        S[        TR                  S5      5      [        TR                  S5      5      -   -  T l        / T l        SUR                  4U U4S jjnX!l	        g )N   borderpadxr   c                   > US:w  a  U" X5      $ TR                   n[        U 5      U:  a  U" X5      $ TR                  U 5      nXC:  a  U" X5      $ [        XUT5      nTR	                  S[
        R                  5        TR                  SUSSS9  TR                  S5        TR                  5         TR	                  S[
        R                  5        TR                  R                  U5        g )Nstdoutiomark      windowr   pady)r   r   count_linesr   mark_gravityr5   RIGHTwindow_createseeupdateLEFTr^   append)r   r.   writer   r/   expandingbuttonr@   r"   s         r   mywrite"Squeezer.__init__.<locals>.mywrite   s    xQ~% &*%@%@"1v..Q~%))!,J2Q~% .az4HO h1x$%A  /HHXKKMh0 !!((9r   )
r1   r"   r2   r3   r4   r)   cgetwindow_width_deltar^   r   )r@   r1   r   r"   s   `  @r   r7   Squeezer.__init__   s     "<<'	D !++ #$		(#$		&!"##

 !# gmm 	: 	:<  r   c                 @    [        XR                  R                  5      $ r(   )r   r1   width)r@   r   s     r   r   Squeezer.count_lines  s     )LL,>,>??r   c                    U R                   R                  [        R                  5      nS H
  nX!;   d  M
    O   U R                   R	                  5         gU R                   R                  U[        R                  S-   5      u  p4U R                   R                  X45      n[        U5      S:  a,  US   S:X  a#  U R                   R                  SU-  5      nUS S nU R                  R                  X45        U R                  U5      n[        XRX`5      nU R                   R                  X7SS	S
9  [        U R                  5      nUS:  aq  U R                   R                  U R                  US-
     SU5      (       a?  US-  nUS:  a4  U R                   R                  U R                  US-
     SU5      (       a  M?  U R                  R!                  X5        g)N)r   stderrrV   z+1cr   r   z%s-1cr   r   r   r
   >)r"   	tag_namesr5   INSERTbelltag_prevrangegetr   rZ   r4   r\   r   r   r   r^   comparer[   )	r@   r   tag_namer   endr   r/   r   is	            r   squeeze_current_textSqueezer.squeeze_current_text"  s    II''		2	,H$ -
 IINN YY,,Xryy57HI
IIMM%% q6A:!B%4-))//'C-0C#2A 	e) %%a(
)!zH 			%&Q 	  	0 %%&!e		))$*?*?!*D*-@ @FA !e		))$*?*?!*D*-@ @ 	$$Q8r   )r4   r1   r^   r"   r   N)
r   r   r   r   classmethodr   r7   r   r   r   r   r   r   r   r      s'     
 
= ~@-r   r   __main__)r   zidlelib.idle_test.test_squeezerr   F)	verbosityexit)r%   )r   tkinterr5   r   idlelib.configr   idlelib.textviewr   idlelib.tooltipr   idlelibr   r   r6   r   r   r   r   unittestr   r   r   r   <module>r      sm   " 
   # & $ 5pqbii qhG GT 	  z	*aeD r   