
    ࢉiE                         d dl Z d dlmZmZmZmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ dd	lmZmZ  G d
 de      Zy)    N)UnionTupleOptionalAny   )	CTkCanvas)ThemeManager)
DrawEngine)CTkBaseClass)CTkFont)pop_from_dict_by_setcheck_kwargs_emptyc                   ^    e Zd ZdZdZh dZddddddddddddej                  fded	e	d
e	de
e	   de
e	   deeeeef   f   de
eeeeef   f      de
eeeeef   f      de
eeeeef   f      de
eeeeef   f      deej                  df   deedf   de
eeef      def fdZd;de
e   fdZd Zd Z fdZd< fd	Zd Z fdZd= fd	Zd= fd 	Zd!ed"ef fd#Zd>d$Zd<d%Zd& Zd' Z d;d(Z!d;d)Z"d;d*Z#d+ Z$d, Z%d- Z&d. Z'd/ Z(d0 Z)d1 Z*d2 Z+d3 Z,d4 Z-d5 Z.d6 Z/d7 Z0d8 Z1d9 Z2d: Z3 xZ4S )?CTkEntryz
    Entry with rounded corners, border, textvariable support, focus and placeholder.
    For detailed information check out the documentation.
       >   showjustifyvalidate	takefocusinsertwidthinsertontimeinsertofftimexscrollcommandexportselectionvalidatecommandinsertborderwidthselectborderwidth      Ntransparentmasterwidthheightcorner_radiusborder_widthbg_colorfg_colorborder_color
text_colorplaceholder_text_colortextvariableplaceholder_textfontstatec                 8   t         |   ||||       | j                  dd       | j                  dd       |t        j
                  d   d   n| j                  |d      | _        |	t        j
                  d   d	   n| j                  |	      | _        |
t        j
                  d   d
   n| j                  |
      | _	        |t        j
                  d   d   n| j                  |      | _
        |t        j
                  d   d   n|| _        |t        j
                  d   d   n|| _        d| _        || _        d| _        i | _        || _        || _        d| _        |
t)               n| j+                  |      | _        t/        | j,                  t(              r%| j,                  j1                  | j2                         | j"                  :| j"                  dk(  s+| j"                  j5                  d| j6                        | _        t9        | d| j;                  | j<                        | j;                  | j>                              | _         tC        | j@                        | _"        tG        jH                  d| ddd| jK                  | j,                        | j$                  | j"                  dtM        || jN                        | _(        tS        |d       | jU                          | jW                          | jY                          | j[                          y )N)r!   r&   r"   r#   r   r   )weightr   r'   T)transparencyr)   r*   r(   r$   r%   F write)r!   highlightthicknessr"   r#   )r!   bdr"   r4   r-   r.   r+   )raise_error ).super__init__grid_rowconfiguregrid_columnconfigurer	   theme_check_color_type	_fg_color_text_color_placeholder_text_color_border_color_corner_radius_border_width_is_focused_placeholder_text_placeholder_text_active_pre_placeholder_arguments_textvariable_state_textvariable_callback_namer   _check_font_type_font
isinstanceadd_size_configure_callback_update_font	trace_add_textvariable_callbackr   _apply_widget_scaling_current_width_current_height_canvasr
   _draw_enginetkinterEntry_apply_font_scalingr   _valid_tk_entry_attributes_entryr   _create_grid_activate_placeholder_create_bindings_draw)selfr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   kwargs	__class__s                   q/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/customtkinter/windows/widgets/ctk_entry.pyr9   zCTkEntry.__init__   s	   ( 	vV 	q+!!!A!. HPGW++J7
C]a]s]st|  LP]s  ^QKUK]<--j9,Gcgcycy  {E  dFcy  dB|'9'9*'EF^'_  HL  H^  H^  _u  Hv$O[Oc\//
;NKimii  AM  jN R_Qfl00<_MlyO[Oc\//
;NKiu "&!1(-%*,')02( #',WYD4I4I$4O
djj'*JJ2243D3DE""*d.@.@B.F/3/A/A/K/KGUYUpUp/qD, 45'+'A'A$BUBU'V(,(B(B4CWCW(XZ 't||4mm e4'(*+78)-)A)A$**)M*.++151C1Ce ';64CbCb&ce 	6t4""$

    sequencec                     ||dk(  r&| j                   j                  d| j                         ||dk(  r'| j                   j                  d| j                         yy)zS set necessary bindings for functionality of widget, will overwrite other bindings Nz	<FocusIn>z
<FocusOut>)r[   bind_entry_focus_in_entry_focus_out)r`   re   s     rc   r^   zCTkEntry._create_bindingsd   sU    x;6KK[$*>*>?x<7KK\4+@+@A  8rd   c                    | j                   j                  ddd       | j                  | j                  k\  r| j                  j                  dddt        | j                  | j                        t        | j                  | j                  dz                    | j                  | j                        | j                  | j                  dz         f       y | j                  j                  ddd| j                  | j                        | j                  | j                        | j                  | j                  dz         f       y )Nr   nswecolumnrowsticky   r   )rm   rn   ro   padxpady)
rU   gridrB   _minimum_x_paddingr[   minrR   roundrT   rC   r`   s    rc   r\   zCTkEntry._create_gridk   sh   &9$"9"99KKA1V"%d&@&@ATAT&UW\]a]w]wx|  yM  yM  NO  yO  ^P  XQ  #R#'#=#=d>P>P#QSWSmSmnr  oA  oA  DE  oE  TF  #G  H KKA1V"&"<"<T=T=T"U#'#=#=d>P>P#QSWSmSmnr  oA  oA  DE  oE  TF  #G  Hrd   c                 `    | j                   j                         dk(  r| j                          y y Nr2   )rH   getr]   )r`   var_nameindexmodes       rc   rQ   zCTkEntry._textvariable_callbackw   s*    !!#r)&&( *rd   c                 p   t        |   |i | | j                  j                  | j	                  | j
                               | j                  j                  | j                  | j                        | j                  | j                               | j                          | j                  d       y )Nr-   r"   r#   Tno_color_updates)r8   _set_scalingr[   	configurerY   rL   rU   rR   _desired_width_desired_heightr\   r_   )r`   argsra   rb   s      rc   r   zCTkEntry._set_scaling{   s    d-f-4#;#;DJJ#GHT%?%?@S@S%T]a]w]wx|  yM  yM  ^N  	O

D
)rd   c                     t         |   ||       | j                  j                  | j	                  | j
                        | j	                  | j                               | j                  d       y )Nr   Tr   )r8   _set_dimensionsrU   r   rR   r   r   r_   )r`   r"   r#   rb   s      rc   r   zCTkEntry._set_dimensions   s_    v.T%?%?@S@S%T&*&@&@AUAU&V 	 	X

D
)rd   c                     | j                   j                  | j                  | j                               | j                  j                          | j                  j                  ddd       y)zX pass font to tkinter widgets with applied font scaling and update grid with workaround r   r   rk   rl   N)r[   r   rY   rL   rU   grid_forgetrs   rw   s    rc   rO   zCTkEntry._update_font   sQ    4#;#;DJJ#GH 	  "&9rd   c                     t        | j                  t              r%| j                  j                  | j                         t
        |           y N)rM   rL   r   remove_size_configure_callbackrO   r8   destroy)r`   rb   s    rc   r   zCTkEntry.destroy   s3    djj'*JJ55d6G6GHrd   c                    t         |   |       | j                  j                  | j	                  | j
                        | j	                  | j                        | j	                  | j                        | j	                  | j                              }|s|du r*| j                  j                  | j                  | j                               | j                  | j                        dk(  r| j                  j                  d| j                  | j                        | j                  | j                               | j                  j                  | j                  | j                        | j                  | j                        | j                  | j                        | j                  | j                               n| j                  j                  d| j                  | j                        | j                  | j                               | j                  j                  | j                  | j                        | j                  | j                        | j                  | j                        | j                  | j                               | j                  j                  d| j                  | j                         | j                  | j                                | j"                  rj| j                  j%                  | j                  | j&                        | j                  | j&                        | j                  | j&                               y | j                  j%                  | j                  | j(                        | j                  | j(                        | j                  | j(                               y y )	NF)bgr    inner_parts)filloutline)r   disabledbackgroundreadonlybackgroundhighlightcolorborder_parts)fgdisabledforegroundinsertbackground)r8   r_   rV   draw_rounded_rect_with_borderrR   rS   rT   rB   rC   rU   r   _apply_appearance_mode	_bg_colorr>   
itemconfigr[   rA   rF   configr@   r?   )r`   r   requires_recoloringrb   s      rc   r_   zCTkEntry._draw   s   &'"//MMdNhNhimi|i|N}NRNhNhimi}i}N~NRNhNhimi|i|N}NRNhNhimi{i{N|~
 "2e";LL""d&A&A$..&Q"R**4>>:mK''-1-H-H-X040K0KDNN0[ ( ] %%)D)DT^^)T9=9T9TUYUcUc9d9=9T9TUYUcUc9d595P5PQUQ_Q_5` & b
 ''-1-H-H-X040K0KDNN0[ ( ] %%)D)DT^^)T9=9T9TUYUcUc9d9=9T9TUYUcUc9d595P5PQUQ_Q_5` & b
 LL##N)-)D)DTEWEW)X,0,G,GHZHZ,[ $ ] ,,""d&A&A$B^B^&_6:6Q6QRVRnRn6o484O4OPTPlPl4m # o ""d&A&A$BRBR&S6:6Q6QRVRbRb6c484O4OPTP`P`4a # c; #<rd   c                    d|v r<|j                  d      | _        | j                  j                  | j                         d|v r'| j	                  |j                  d            | _        d}d|v r'| j	                  |j                  d            | _        d}d|v r'| j	                  |j                  d            | _        d}d|v r'| j	                  |j                  d            | _        d}d|v r(|j                  d      | _	        | j                          d}d	|v r(|j                  d	      | _        | j                          d}d
|v r|j                  d
      | _        | j                  rQ| j                  j                  dt        j                          | j                  j#                  d| j                         n| j%                          d|v r<|j                  d      | _        | j                  j                  | j&                         d|v rt)        | j*                  t,              r%| j*                  j/                  | j0                         | j3                  |j                  d            | _        t)        | j*                  t,              r%| j*                  j5                  | j0                         | j1                          d|v rV| j                  r|j                  d      | j6                  d<   n+| j                  j                  |j                  d              | j                  j                  di t9        || j:                         t=        |   dd|i| y )Nr.   )r.   r'   Tr)   r*   r(   r%   r$   r,   r   r+   )r+   r-   r   )r   require_redrawr7   )poprI   r[   r   r=   r>   r?   r@   rA   rC   r\   rB   rE   rF   deleterW   ENDinsertr]   rH   rM   rL   r   r   rO   rK   rN   rG   r   rZ   r8   )r`   r   ra   rb   s      rc   r   zCTkEntry.configure   s   f **W-DKKK!!!4!33FJJz4JKDN!N6!#55fjj6NOD!N#v-+/+A+A&**MeBf+gD(!NV#!%!7!7

>8R!SD!NV#!'N!;D!Nf$"(**_"=D!N'%+ZZ0B%CD",,""1gkk2""1d&<&<=**,V#!'N!;DKK!!t/A/A!BV$**g.

99$:K:KL..vzz&/ABDJ$**g.

66t7H7HIV,,:@**V:L//7%%6::f+=%>^ 4VT=\=\ ]^BB6Brd   attribute_namereturnc                    |dk(  r| j                   S |dk(  r| j                  S |dk(  r| j                  S |dk(  r| j                  S |dk(  r| j                  S |dk(  r| j
                  S |dk(  r| j                  S |dk(  r| j                  S |d	k(  r| j                  S |d
k(  r| j                  S || j                  v r| j                  j                  |      S t        | 1  |      S )Nr$   r%   r'   r(   r)   r*   r+   r,   r-   r.   )rB   rC   r>   rA   r?   r@   rH   rE   rL   rI   rZ   r[   cgetr8   )r`   r   rb   s     rc   r   zCTkEntry.cget   s    _,&&&~-%%%z)>>!~-%%%|+###77///~-%%%11)))v%::w&;;t>>>;;##N337<//rd   c                 h    |dk(  s|du st        d      | j                  j                  ||d       y) called on the tkinter.Entry +TzE'add' argument can only be '+' or True to preserve internal callbacks)addN)
ValueErrorr[   rg   )r`   re   commandr   s       rc   rg   zCTkEntry.bind  s4    s
cTkdee75rd   c                 z    |t        d      | j                  j                  |d       | j                  |       y)r   Nz'funcid' argument can only be None, because there is a bug in tkinter and its not clear whether the internal callbacks will be unbinded or not)re   )r   r[   unbindr^   )r`   re   funcids      rc   r   zCTkEntry.unbind"  sB     q r r8T*x0rd   c                 $   | j                   j                         dk(  r| j                  | j                  | j                  dk(  rd| _        d| j                   j                  d      i| _        | j                   j                  | j                  | j                        | j                  | j                        d       | j                   j                  dt        j                         | j                   j                  d| j                         y y y y )Nr2   Tr   )r   r   r   r   )r[   rz   rE   rH   rF   r   rG   r   r   r@   r   rW   r   r   rw   s    rc   r]   zCTkEntry._activate_placeholder*  s    ;;??"t'='='ItOaOaOimqmm  DF  nF,0D)/5t{{7G7G7O.PD+KK$"="=d>Z>Z"[262M2MdNjNj2k$&  ( KKq'++.KKq$"8"89 nF'I"rd   c                    | j                   r| j                  j                  d      dk7  rd| _         | j                  j                  | j	                  | j
                        | j	                  | j
                               | j                  j                  dt        j                         | j                  j                         D ]  \  }}|| j                  |<    y y y )Nr.   readonlyF)r   r   r   )rF   r[   r   r   r   r?   r   rW   r   rG   items)r`   argumentvalues      rc   _deactivate_placeholderz CTkEntry._deactivate_placeholder5  s    ((T[[-=-=g-F*-T,1D)KK$"="=d>N>N"O262M2MdN^N^2_  bKKq'++.#'#B#B#H#H#J .%(-H%. .U(rd   c                 2    | j                          d| _        y )NF)r]   rD   r`   events     rc   ri   zCTkEntry._entry_focus_out?  s    ""$ rd   c                 2    | j                          d| _        y )NT)r   rD   r   s     rc   rh   zCTkEntry._entry_focus_inC  s    $$&rd   c                     | j                   j                  ||       | j                  s/| j                   j                         dk(  r| j	                          y y y ry   )r[   r   rD   rz   r]   )r`   first_index
last_indexs      rc   r   zCTkEntry.deleteG  sE    ;
3DKKOO$5$;&&( %<rd   c                 Z    | j                          | j                  j                  ||      S r   )r   r[   r   )r`   r|   strings      rc   r   zCTkEntry.insertM  s%    $$&{{!!%00rd   c                 P    | j                   ry| j                  j                         S ry   )rF   r[   rz   rw   s    rc   rz   zCTkEntry.getR  s    ((;;??$$rd   c                 8    | j                   j                          y r   )r[   focusrw   s    rc   r   zCTkEntry.focusX  s    rd   c                 8    | j                   j                          y r   )r[   	focus_setrw   s    rc   r   zCTkEntry.focus_set[  s    rd   c                 8    | j                   j                          y r   )r[   focus_forcerw   s    rc   r   zCTkEntry.focus_force^  s    !rd   c                 8    | j                   j                  |      S r   )r[   r|   r`   r|   s     rc   r|   zCTkEntry.indexa      {{  ''rd   c                 8    | j                   j                  |      S r   r[   icursorr   s     rc   r   zCTkEntry.icursord      {{""5))rd   c                 8    | j                   j                  |      S r   )r[   select_adjustr   s     rc   r   zCTkEntry.select_adjustg  s    {{((//rd   c                 8    | j                   j                  |      S r   r   r   s     rc   select_fromzCTkEntry.select_fromj  r   rd   c                 6    | j                   j                         S r   )r[   select_clearrw   s    rc   r   zCTkEntry.select_clearm  s    {{''))rd   c                 6    | j                   j                         S r   )r[   select_presentrw   s    rc   r   zCTkEntry.select_presentp  s    {{))++rd   c                 :    | j                   j                  ||      S r   )r[   select_range)r`   start_index	end_indexs      rc   r   zCTkEntry.select_ranges  s    {{''Y??rd   c                 8    | j                   j                  |      S r   )r[   	select_tor   s     rc   r   zCTkEntry.select_tov  s    {{$$U++rd   c                 8    | j                   j                  |      S r   )r[   xviewr   s     rc   r   zCTkEntry.xviewy  r   rd   c                 8    | j                   j                  |      S r   )r[   xview_moveto)r`   fs     rc   r   zCTkEntry.xview_moveto|  s    {{''**rd   c                 :    | j                   j                  ||      S r   )r[   xview_scroll)r`   numberwhats      rc   r   zCTkEntry.xview_scroll  s    {{''55rd   r   )NN)F)NNT)5__name__
__module____qualname____doc__rt   rZ   rW   NORMALr   intr   r   strr   Variabletupler   r9   r^   r\   rQ   r   r   rO   r   r_   r   anyr   rg   r   r]   r   ri   rh   r   r   rz   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   __classcell__)rb   s   @rc   r   r      sF   
 "h "!04/39FCGGKEIQU?C6:9=%nn!III I !)	I
  (}I !eCHo!56I $E#uS#X*>$?@I  (c5c?.B(CDI &eCsCx,@&ABI *2%U38_8L2M)NI  %W%5%5t%;<I $)d#3I  eWn 56I  !IVB# B
H)**:'cR;Cz03 03 0:61	:.! )1
% "(*0**,@,(+6rd   r   )rW   typingr   r   r   r   core_renderingr   r<   r	   r
   core_widget_classesr   r-   r   utilityr   r   r   r7   rd   rc   <module>r      s.     . . %  & -  =t6| t6rd   