+
     BiQ                         R t ^ RIt^ RI5 ^ RIHt ^ RIHtHt ^ RIH	t	 Rt
Rt]R3tR	tRtR
tRtRtRtRt ! R R4      t]R8X  d   ^ RIHt ]! R^RR7       R# R# )zH
An auto-completion window for IDLE, used by the autocomplete extension
N)*)	Scrollbar)FILESATTRS)MC_SHIFTz<<autocompletewindow-hide>>z
<FocusOut>z<ButtonPress>z<<autocompletewindow-keypress>>z!<<autocompletewindow-keyrelease>>z<KeyRelease>z<B1-ButtonRelease>z<Configure>z<B1-Double-ButtonRelease>c                      a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tRtV tR# )AutoCompleteWindowc                6   Wn         W n        R ;V n        ;V n        V n        R ;V n        V n        R V n        R V n        R V n	        R V n
        R V n        R V n        R V n        R ;V n        ;V n        ;V n        ;V n        ;V n        V n        RV n        RV n        R # )NF)widgettagsautocompletewindowlistbox	scrollbarorigselforegroundorigselbackgroundcompletionsmorecompletionsmodestart
startindexlasttypedstartuserwantswindowhideid
keypressidlistupdateidwinconfigidkeyreleaseiddoubleclickidlastkey_was_tabis_configuring)selfr
   r   s   &&&-/usr/lib/python3.14/idlelib/autocomplete_w.py__init__AutoCompleteWindow.__init__   s    	BFFF$, ;?>!7#	
 #  $ IM	M 	Mdo 	M(9 	M	M#043E$#    c                :   \        \        V P                  4      \        V4      4      p^ pW28  d*   V P                  V,          W,          8X  d   V^,          pK/  V\        V P                  4      8  dV   V P                  P	                  RV P
                  V3,          RV P
                  \        V P                  4      3,          4       V\        V4      8  d=   V P                  P                  RV P
                  V3,          WR V P                  4       Wn        R# )    %s+%dcN)minlenr   r
   deleter   insertr   )r    newstartmin_lenis   &&  r!   _change_start AutoCompleteWindow._change_start@   s    c$**os8}5kdjjmx{:FAs4::KKx4??A*>>'4??C

O*LLNs8}KKx4??A*>>'|#yy* 
r$   c                    ^ p\        V P                  4      pW28  d7   W#,           ^,          pV P                  V,          V8  d   TpK1  V^,           pK<  \        V\        V P                  4      ^,
          4      # )zFind the first index in self.completions where completions[i] is
greater or equal to s, or the last index if there is no such.
)r)   r   r(   )r    sr.   jms   &&   r!   _binary_search!AutoCompleteWindow._binary_searchN   sf     3t''(qe1A"a'E1c$**+A-..r$   c                p   V P                  V4      pV P                  V,          R\        V4       V8w  d   V# V^,           p\        V P                  4      pWC8  dC   W4,           ^,          pV P                  V,          R\        V4       V8w  d   TpK=  V^,           pKH  V^,
          pW&8X  d   V P                  V,          # V P                  V,          pV P                  V,          p\        \        V4      \        V4      4      p	\        V4      pW98  d   Ws,          W,          8X  d   V^,          pK$  VRV # )zAssuming that s is the prefix of a string in self.completions,
return the longest string which is a prefix of all the strings which
s is a prefix of them. If s is not a prefix of a string, return s.
N)r5   r   r)   r(   )
r    r2   firstr.   r3   r4   last
first_comp	last_compr-   s
   &&        r!   _complete_string#AutoCompleteWindow._complete_string[   s   
 ##A&E"7CF+q0HAI  !e1A"7CF+q0Es=##E** %%e,
$$T*	c*os9~6Fkjmy|;FA"1~r$   c                   \        V P                  P                  4       ^ ,          4      pV P                  P                  V4       V P                  pV P
                  V,          pV P                  V4      V8X  d   TpMI\        \        V4      \        V4      4      p^ pWe8  d   W&,          W6,          8X  d   V^,          pK$  VRV pV P                  V4       V P
                  V,          R\        V P                  4       V P                  8X  d4   V P                  P                  V P                  V P                  R7       R# V P                  P                  V P                  P                  R4      V P                  P                  R4      R7       V P                  '       d   V P                  V n        RV n        V P                  P!                  ^ \"        4       V P
                   F#  pV P                  P%                  \"        V4       K%  	  V P                  P'                  V P                  V P                  4      4       V P)                  4        R# R# )zjCall when the selection of the Listbox has changed.

Updates the Listbox display and calls _change_start.
N)selectbackgroundselectforegroundbgfg)intr   curselectionseer   r   r5   r(   r)   r/   r   	configurer   r   cgetr   r*   ENDr+   
select_set_selection_changed)r    curselltsselstartr,   r-   r.   items   &       r!   rJ   %AutoCompleteWindow._selection_changed{   s   
 T\\..034 !!##F+s#v-H#c(CM2GA+#&HK"7Q|H8$F#$4S_5CLL""D4J4J484J4J # L LL""DLL4E4Ed4K48LL4E4Ed4K # M ####'#7#7 '+$##As+ ,,DLL''T2 -''(;(;DJJ(GH'') $r$   c                <	   Vw  V n         V n        W@n        V P                  P	                  V4      V n        V P                  P                  V P
                  R4      V n        V'       d   V P                  V P                  4      pV P                  pV P                  V4       V P                  V4      pV P                   V,          V8X  dQ   V\        V P                   4      ^,
          8X  g,   V P                   V^,           ,          R\        V4       V8w  d   Wg8H  # WPn        V P                  V n        \        V P                  4      ;V n        p	V	P!                  4        V	P#                  ^4        V	P$                  P'                  RRV	P(                  RR4       \-        V	\.        R7      ;V n        p
\3        WP4                  RR	7      ;V n        pV P                    F  pVP9                  \:        V4       K  	  VP=                  R
4      V n        VP=                  R4      V n         V
PC                  VPD                  R7       V
PG                  \H        \J        R7       VPG                  \L        \N        RR7       V	PQ                  4        V P6                  PS                  V P                  V P                  4      4       V PU                  4        V	PW                  \X        V PZ                  4      V n.        V P                  PW                  \X        V PZ                  4      V n/        V	Pa                  \X        \b        4       \d         F#  pV P                  Pa                  \X        V4       K%  	  V P                  PW                  \f        V Ph                  4      V n5        \l         F#  pV P                  Pa                  \f        V4       K%  	  V P                  PW                  \n        V Pp                  4      V n9        V P                  Pa                  \n        \t        4       VPW                  \v        V Px                  4      V n=        RV n>        V	PW                  \~        V P                  4      V nA        VPW                  \        V P                  4      V nD        R#   \*         d     ELi ; i)zShow the autocomplete list, bind events.

If complete is True, complete the text, and if there is exactly
one matching completion, don't open a list.
r+   Nz!::tk::unsupported::MacWindowStylestylehelpnoActivates)orientF)yscrollcommandexportselectionr@   r?   )command)sidefillT)rX   rY   expand)Er   r   r   r
   indexr   getr   r<   r/   r5   r)   r   r   Toplevelr   withdrawwm_overrideredirecttkcall_wTclErrorr   VERTICALr   Listboxsetr   r+   rH   rG   r   r   configyviewpackRIGHTYLEFTBOTHliftrI   rJ   bindHIDE_VIRTUAL_EVENT_NAME
hide_eventhideaidhidewid	event_addHIDE_FOCUS_OUT_SEQUENCEHIDE_SEQUENCESKEYPRESS_VIRTUAL_EVENT_NAMEkeypress_eventr   KEYPRESS_SEQUENCESKEYRELEASE_VIRTUAL_EVENT_NAMEkeyrelease_eventr   KEYRELEASE_SEQUENCELISTUPDATE_SEQUENCElistselect_eventr   r   WINCONFIG_SEQUENCEwinconfig_eventr   DOUBLECLICK_SEQUENCEdoubleclick_eventr   )r    
comp_listsr[   completer   userWantsWin	completedr   r.   acwr   r   rN   seqs   &&&&&&        r!   show_windowAutoCompleteWindow.show_window   s~    2<.$.	++++E2[[__T__h?
--djj9IJJEy)##I.A"i/S))*1,,  1%os9~6)C ))+"jj(0(==#"	FFKK;Wcff/ &/s8%DD!(]]9>"@ 	@w$$DNN3% %!(.@!A!(.@!A/E*$T$7
 	 3 3DJJ ?@! xx 7I{{''(?Q-/FG!CKK!!"93? " ++**+F+/+>+>@%CKK!!"=sC & KK,,-J-1-B-BD;<OP#LL)<)-)>)>@#88$68L8LM$\\*>*.*@*@BO  		s   /)R RRc           	     N   V P                   '       d   R # RV n         V P                  4       '       g   R #  V P                  pVP                  V P                  4       VP                  V P                  4      w  r4rVV P                  p\        P                  ! 4       P                  R4      '       d   VP                  4        VP                  4       VP                  4       rVP                  4       VP                  4       rVP                  4       \        V\        ^ W,
          4      4      ,           pVP!                  4       V,           pWV,           ,
          V	8  g   WI8  d
   W,          pMW,          pVP#                  RW3,          4       VP%                  4        VP'                  4        \        P                  ! 4       P                  R4      '       d)    XP+                  \,        V P.                  4       R V n        RV n         R #   \(         d     Lhi ; i  \(         d     L.i ; i)NTWindowsz+%d+%dF)r   	is_activer
   rE   r   bboxr   platformsystem
startswithupdatewinfo_widthwinfo_heightwinfo_rootxr(   maxwinfo_rootywm_geometry	deiconifyupdate_idletasksrc   unbindr   r   )r    eventtextxycxcyr   	acw_width
acw_height
text_widthtext_heightnew_xnew_ys   &&            r!   r   "AutoCompleteWindow.winconfig_event   s   "~~	;;DHHT__%99T__5LA"))C ++I66 

$'OO$5s7G7G7Iz&*&6&6&8$:K:K:M$$&QAz7M0N)OOE$$&*E2v&*4> #OOH~56MMO  " ??''	22

-t/?/?@  $D#  		  s$   E5H  H HHH$#H$c                    V P                   '       g   R #  V P                   P                  4       '       g   V P                  4        R # R #   \         d    T P                  4         R # i ; iN)r   	focus_gethide_windowKeyErrorr    s   &r!   _hide_event_check$AutoCompleteWindow._hide_event_check  sY    &&&	**4466  " 7 	 	s   A
 A
 
A)(A)c                &   V P                  4       '       d{   VP                  \        P                  8X  d)   V P                  P                  ^V P                  4       R# VP                  \        P                  8X  d   V P                  4        R# R# R# )   N)	r   type	EventTypeFocusOutr
   afterr   ButtonPressr   r    r   s   &&r!   rq   AutoCompleteWindow.hide_event*  sg     >>zzY/// !!!T%;%;<y444  " 5 r$   c                    V P                  4       '       dV   R V n        \        V P                  P	                  4       ^ ,          4      pV P                  V P                  V,          4       R# R# )TN)r   r   rC   r   rD   r/   r   r    r   rK   s   && r!   r~   #AutoCompleteWindow.listselect_event7  sQ    >>#'D 224Q78Ft//78 r$   c                    \        V P                  P                  4       ^ ,          4      pV P                  V P                  V,          4       V P                  4        R# )r&   N)rC   r   rD   r/   r   r   r   s   && r!   r   $AutoCompleteWindow.doubleclick_event=  sC    T\\..0344++F34r$   c                  a V P                  4       '       g   R # VP                  o\        VR4      '       d   VP                  pM^ pSR8w  d   RV n        \        S4      ^8X  g&   SR9   g   V P                  \        8X  Ed   SR9   Ed   V\        ( ,          '       Eg   \        S4      ^8X  d$   V P                  V P                  S,           4       MSR8X  d$   V P                  V P                  R,           4       MSR8X  d$   V P                  V P                  R,           4       MtSR8X  d$   V P                  V P                  R	,           4       MJ\        V P                  4      ^ 8X  d   V P                  4        R # V P                  V P                  R R 4       V P                  V n        V P                  P                  ^ \        V P                  P!                  4       ^ ,          4      4       V P                  P#                  V P%                  V P                  4      4       V P'                  4        R
# SR8X  d#   V P)                  4        V P                  4        R
# V P                  \*        8X  d   SR9   g1   V P                  \        8X  d   SR9   d   V\        ( ,          '       g   \        V P                  P!                  4       ^ ,          4      pV P,                  V,          R \        V P                  4       V P                  8X  dJ   V P                  \*        8X  g   V P                  '       d#   V P                  V P,                  V,          4       V P                  4        R # SR9   Ed   V'       Eg   RV n        \        V P                  P!                  4       ^ ,          4      pSR8X  d   ^ pEMSR8X  d   \        V P,                  4      ^,
          pMSR9   d   V P                  P1                  V P                  P3                  4       4      V P                  P1                  ^ 4      ,
          pSR8X  d   \5        ^ W5,
          4      pMSR8X  g   Q h\7        \        V P,                  4      ^,
          W5,           4      pMQSR8X  d   \5        ^ V^,
          4      pM6SR8X  g   Q h\7        \        V P,                  4      ^,
          V^,           4      pV P                  P                  V4       V P                  P#                  V4       V P'                  4        V P                  V P,                  V,          4       R
# SR8X  d   V'       g   V P                  '       d_   \        V P                  P!                  4       ^ ,          4      pV P                  V P,                  V,          4       V P                  4        R
# RV n        RV n        R # \8        ;QJ d    V3R lR 4       F  '       g   K   RM	  RM! V3R lR 4       4      '       d   R # VP:                  '       d   VP:                  R8  d   V P                  V P                  VP:                  ,           4       V P                  V n        V P                  P                  ^ \        V P                  P!                  4       ^ ,          4      4       V P                  P#                  V P%                  V P                  4      4       V P'                  4        R
# V P                  4        R # )Nmc_stateTabF
underscoreperiodminus_.-breakReturnHomeEndPriorNextUpDownTc              3   ,   <"   T F	  qS9   x  K  	  R # 5ir    ).0r2   keysyms   & r!   	<genexpr>4AutoCompleteWindow.keypress_event.<locals>.<genexpr>  s      E 'Df 'Ds    )r   	BackSpace)r   r   )r   space	parenleft
parenrightbracketleftbracketright)slash	backslashquotedbl
apostrophe)r   r   r   r   r   r   )r   r   )ShiftControlAltMetaCommandOption)r   r   hasattrr   r   r)   r   r   r   r/   r   r   r   r   select_clearrC   rD   rI   r5   rJ   r   r   r   r   nearestr   r   r(   anychar)r    r   staterK   newseljumpr   s   &&    @r!   rx   !AutoCompleteWindow.keypress_eventC  s?   ~~5*%%NNEEU?#(D K1*E E		U"v#($XI%%6{a""4::#67<'""4::#348#""4::#347"""4::#34 tzz?a'$$&""4::cr?3"&**DLL%%aT\\-F-F-H-K)LMLL##D$7$7

$CD##%xMMOii5 V& ii5 V>&?xi'' 224Q78F'(8TZZ9TZZGII&$***""4#3#3F#;<EE#'D 224Q78F5T--.q0,,||++DLL,E,E,GH||++A./W$ FK0F!V+++ T%5%5!6q!8&+FF4Qq)'''S!1!1214fQh?LL%%f-LL##F+##%t//78oe###T\\668;<""4#3#3F#;<  " (,$'+$S E 'D ESSS E 'D E E E ZZZEJJ#-tzzEJJ67"&**DLL%%aT\\-F-F-H-K)LMLL##D$7$7

$CD##% r$   c                   V P                  4       '       g   R # V P                  P                  R4      V P                  P                  RV P                  \	        V P
                  4      3,          4      8w  d   V P                  4        R # R # )Nr+   r'   )r   r
   r[   r   r)   r   r   r   s   &&r!   r{   #AutoCompleteWindow.keyrelease_event  sf    ~~;;X&;;X#djj/(JJKL Lr$   c                    V P                   R J# r   )r   r   s   &r!   r   AutoCompleteWindow.is_active  s    &&d22r$   c                Z    V P                  V P                  V P                  4      4       R # r   )r/   r<   r   r   s   &r!   r   AutoCompleteWindow.complete  s    400<=r$   c                   V P                  4       '       g   R # V P                  P                  \        \        4       \
         F#  pV P                  P                  \        V4       K%  	  V P                  P                  \        V P                  4       V P                  P                  \        V P                  4       R V n        R V n	        \         F#  pV P                  P                  \        V4       K%  	  V P                  P                  \        V P                  4       R V n        V P                  P                  \        \        4       V P                  P                  \        V P                  4       R V n        V P                   P                  \"        V P$                  4       R V n        V P&                  '       d2   V P                  P                  \(        V P&                  4       R V n        V P                  P+                  4        V P,                  P/                  4        R V n        V P                   P/                  4        R V n        V P                  P/                  4        R V n        R # r   )r   r   event_deleterp   ru   rv   r
   r   rr   rs   ry   rw   r   rz   r|   r   r   r}   r   r   r   	focus_setr   destroy)r    r   s   & r!   r   AutoCompleteWindow.hide_window  s   ~~ 	,,-D-D	F!CKK$$%<cB " 	&&'>M2DLLA%CKK$$%@#F &6H  !>!4	68$:K:KL /1B1BC ##**+=t?O?OP#D 	 	 '')"&r$   )r   r   r   rr   r   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   N)__name__
__module____qualname____firstlineno__r"   r/   r5   r<   rJ   r   r   r   rq   r~   r   rx   r{   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r!   r   r      sb     !$F/@$*LFP3$j
#9rh3>%' %'r$   r   __main__)mainz%idlelib.idle_test.test_autocomplete_wF)	verbosityexit)z<Key>z<Key-BackSpace>z<Key-Return>z	<Key-Tab>z<Key-Up>z
<Key-Down>z
<Key-Home>z	<Key-End>z<Key-Prior>z
<Key-Next>z<Key-Escape>)__doc__r   tkintertkinter.ttkr   idlelib.autocompleter   r   idlelib.multicallr   rp   ru   rv   rw   ry   rz   r|   r}   r   r   r   r   unittestr  r   r$   r!   <module>r     s      ! - &7 & )?;? C  !D $ * " 2 P' P'f z	0AEJ r$   