
    ࢉiW                         d dl Z d dlZd dlmZ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  G d	 d
e      Zy)    N)UnionTupleCallableOptionalAny   )	CTkCanvas)ThemeManager)
DrawEngine)CTkBaseClass)CTkFontc            1           e Zd ZdZdddddddddddddd ddej
                  dddddfd	ed
e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	e
ee
e
f   f      dee	e
ee
e
f   f      de
dee	eef      de	ej                  df   de
dede	eg ef   df   de	ee
f   de	ee
f   de	ej                  df   f. fd Zd;d!ee
   fd"Z fd#Zd<d
edef 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, Zd>d-Zd>d.Zd/ Zd>d0Zd=d1Z d=d2Z!d*e	ee
f   fd3Z"d?d!e
ded4e	e
ef   fd5Z#d<d!e
d6e
fd7Z$d8 Z%d9 Z&d: Z' xZ(S )@CTkCheckBoxz
    Checkbox with rounded corners, border, variable support and hover effect.
    For detailed information check out the documentation.
    d      NtransparentTr   r   masterwidthheightcheckbox_widthcheckbox_heightcorner_radiusborder_widthbg_colorfg_colorhover_colorborder_colorcheckmark_color
text_colortext_color_disabledtextfonttextvariablestatehovercommandonvalueoffvaluevariablec                 6	   t        |   d||||d| || _        || _        |	t        j
                  d   d   n| j                  |	      | _        |
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 | _        |t        j
                  d   d	   n| j                  |      | _        |t        j
                  d   d
   n| j                  |      | _        |
t#               n| j%                  |      | _        t)        | j&                  t"              r%| j&                  j+                  | j,                         || _        || _        || _        d| _        || _        || _        || _        d| _        || _        d | _         | jC                  dd       | jC                  dd| jE                  d             | jC                  dd       | jG                  dd       tI        | d| jE                  | jJ                        | jE                  | jL                              | _'        | jN                  jQ                  dddd       tI        | d| jE                  | j                        | jE                  | j                              | _)        | jR                  jQ                  ddd       tU        | jR                        | _+        tY        jZ                  | ddd| j                  tX        j\                  | j_                  | j&                        | j>                        | _        | j                  jQ                  ddd       d| j                  d<   | j:                  j| j:                  dk7  r[| j:                  ja                  d| jb                        | _         | j:                  je                         | j6                  k(  rdnd| _        | jg                          | ji                          | jk                          y )N)r   r   r   r   r   r   r   r   r   r   r   r   r    Fr   )weightr      r+   minsize   )r   highlightthicknessr   r      nswerowcolumn
columnspanstickye)r4   r5   r7   )r   bdpadxpadyr!   justifyr"   r#   wanchor writeT )6super__init___checkbox_width_checkbox_heightr
   theme_check_color_type	_fg_color_hover_color_border_color_checkmark_color_corner_radius_border_width_text_text_label_text_color_text_color_disabledr   _check_font_type_font
isinstanceadd_size_configure_callback_update_font_command_state_hover_check_state_onvalue	_offvalue	_variable_variable_callback_blocked_textvariable_variable_callback_namegrid_columnconfigure_apply_widget_scalinggrid_rowconfigurer	   _desired_width_desired_height
_bg_canvasgrid_canvasr   _draw_enginetkinterLabelLEFT_apply_font_scaling	trace_add_variable_callbackget_create_bindings_set_cursor_draw)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   kwargs	__class__s                            t/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/customtkinter/windows/widgets/ctk_checkbox.pyrC   zCTkCheckBox.__init__   sq   : 	`v`Y_`  . / KSJZ++M::F`d`v`vw  aAP[PcL..}=mLimii  AL  jMR^Rf\//>~Nlp  mC  mC  DP  mQXgXo 2 2= ABS Tuy  vL  vL  M\  v] UbTil00?Po|R^Rf\//>~Nlx 
7;NXN`<--m<\Jfjf|f|  ~H  gI`s`{L$6$6}$EF[$\  BF  BX  BX  Yl  Bm! #',WYD4I4I$4O
djj'*JJ2243D3DE  !!+3*/'/;'+$ 	!!!A!.!!!At7Q7QRS7T!U!!!A!.q+#478*.*D*DTEXEX*Y+/+E+EdFZFZ+[] 	16J 45'+'A'A$BVBV'W(,(B(B4CXCX(Y[ 	a#6&t||4"==,-././.2jj18.2.F.Ftzz.R6:6H6HJ 	!Ac:%(" >>%$..B*>+/>>+C+CGTMdMd+eD((,(:(:(<(MSXD

    sequencec                    ||dk(  rL| j                   j                  d| j                         | j                  j                  d| j                         ||dk(  rL| j                   j                  d| j                         | j                  j                  d| j                         ||dk(  rM| j                   j                  d| j
                         | j                  j                  d| j
                         yy)zS set necessary bindings for functionality of widget, will overwrite other bindings Nz<Enter>z<Leave>z
<Button-1>)rh   bind	_on_enterrO   	_on_leavetoggle)rt   ry   s     rw   rq   zCTkCheckBox._create_bindings~   s    x94LLi8!!)T^^<x94LLi8!!)T^^<x<7LLlDKK8!!,<  8rx   c                 j   t        |   |i | | j                  dd| j                  d             | j                  j                  | j                  | j                               | j                  j                  d       | j                  j                  | j                  | j                        | j                  | j                               | j                  j                  | j                  | j                        | j                  | j                               | j                  d	       y )
Nr   r   r,   r-   r"   	checkmarkr   r   T)no_color_updates)rB   _set_scalingra   rb   rO   	configurerm   rS   rh   deleterf   rd   re   rD   rE   rs   )rt   argsru   rv   s      rw   r   zCTkCheckBox._set_scaling   s    d-f-!!!At7Q7QRS7T!U""(@(@(L"MK(!!(B(B4CVCV(W)-)C)CDDXDX)Y 	" 	[T%?%?@T@T%U&*&@&@AVAV&W 	 	Y

D
)rx   c                     t         |   ||       | j                  j                  | j	                  | j
                        | j	                  | j                               y )Nr   )rB   _set_dimensionsrf   r   rb   rd   re   )rt   r   r   rv   s      rw   r   zCTkCheckBox._set_dimensions   sQ    v.!!(B(B4CVCV(W)-)C)CDDXDX)Y 	" 	[rx   c                     | j                   o| j                   j                  | j                  | j                               | j                  j                          | j                  j                  dddd       yy)zX pass font to tkinter widgets with applied font scaling and update grid with workaround Nr   r   r1   r2   r3   )rO   r   rm   rS   rf   grid_forgetrg   rt   s    rw   rV   zCTkCheckBox._update_font   sf    '&&D,D,DTZZ,P&Q OO'')OO  QqQv N (rx   c                    | j                   &| j                   j                  d| j                         t        | j                  t
              r%| j                  j                  | j                         t        | %          y )Nr@   )
r]   trace_remover`   rT   rS   r   remove_size_configure_callbackrV   rB   destroy)rt   rv   s    rw   r   zCTkCheckBox.destroy   sW    >>%NN''1M1MNdjj'*JJ55d6G6GHrx   c                 l   t         |   |       | j                  j                  | j	                  | j
                        | j	                  | j                        | j	                  | j                        | j	                  | j                              }| j                  du rl| j                  j                  | j	                  | j
                        | j	                  | j                        | j	                  | j                  dz              }nd}| j                  j                  d       |du s|s|r| j                  j                  | j                  | j                                | j                  j                  | j                  | j                                | j                  du r+| j                  j#                  d| j                  | j$                        | j                  | j$                               | j                  j#                  d| j                  | j$                        | j                  | j$                               d	| j                  j'                  d      v r7| j                  j#                  d| j                  | j(                        
       n| j                  j#                  d| j                  | j(                        
       n| j                  j#                  d| j                  | j                         | j                  | j                                | j                  j#                  d| j                  | j*                        | j                  | j*                               | j,                  t.        j0                  k(  r6| j2                  j                  | j                  | j4                               n5| j2                  j                  | j                  | j6                               | j2                  j                  | j                  | j                                y y )NTg(\?Fr   )bginner_parts)outlinefillborder_partscreate_line)r   )fg)rB   rs   ri   draw_rounded_rect_with_borderrb   rD   rE   rL   rM   rZ   draw_checkmarkrh   r   rf   r   _apply_appearance_mode	_bg_color
itemconfigrH   gettagsrK   rJ   rX   rj   DISABLEDrO   rQ   rP   )rt   r   requires_recoloring_1requires_recoloring_2rv   s       rw   rs   zCTkCheckBox._draw   sr   &' $ 1 1 O OPTPjPjkokk  QAPTPjPjko  lA  lA  QBPTPjPjkok~k~PPTPjPjkok}k}P~!@
 $$($5$5$D$DTE_E_`d`t`tEuEIE_E_`d`u`uEvEIE_E_`d`u`ux|`|E}%! %*!LL,u$(=AVOO%%)D)DT^^)T%ULL""d&A&A$..&Q"R  D(''040K0KDNN0[-1-H-H-X ( Z ''040K0KDNN0[-1-H-H-X ( Z !DLL$8$8$EELL++Kd>Y>YZ^ZoZo>p+qLL++Kd>Y>YZ^ZoZo>p+q''040K0KDNN0[-1-H-H-X ( Z ''040K0KDL^L^0_-1-H-HI[I[-\ ( ^ {{g...  **t/J/J4KdKd/e*g  **d.I.I$JZJZ.[*\&&$*E*Ednn*U&V; BWrx   c                    d|v r|j                  d      | _        d}d|v r|j                  d      | _        d}d|v rM|j                  d      | _        | j                  j                  | j                  | j                               d}d|v rM|j                  d      | _        | j                  j                  | j                  | j                               d}d|v r<|j                  d      | _        | j                  j                  | j                  	       d
|v rt        | j                  t              r%| j                  j                  | j                         | j                  |j                  d
            | _        t        | j                  t              r%| j                  j!                  | j                         | j                          d|v r(|j                  d      | _        | j%                          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'                  |j                  d            | _        d}d|v r'| j'                  |j                  d            | _        d}d|v r'| j'                  |j                  d            | _        d}d|v r|j                  d      | _        d|v r|j                  d      | _        d|v r<|j                  d      | _        | j                  j                  | j8                         d|v r| j:                  5| j:                  dk7  r&| j:                  j=                  d| j>                         |j                  d      | _        | j:                  l| j:                  dk7  r]| j:                  jA                  d| jB                        | _        | j:                  jE                         | jF                  k(  rdnd| _$        d}tK        |   dd|i| y )Nr   Tr   r   )r   r   )r   r!   )r!   r"   r$   r   r   r   r   r   r    r%   r&   r#   )r#   r)   r?   r@   Frequire_redrawrA   )&poprL   rM   rD   rh   r   rb   rE   rN   rO   rT   rS   r   r   rV   rR   rU   rX   rr   rG   rH   rI   rJ   rK   rP   rQ   rY   rW   r_   r]   r   r`   rn   ro   rp   r[   rZ   rB   )rt   r   ru   rv   s      rw   r   zCTkCheckBox.configure   s   f$"(**_"=D!NV#!'N!;D!Nv%#)::.>#?D LL"")C)CDDXDX)Y"Z!N&$*JJ/@$AD!LL""$*D*DTEZEZ*["\!NVF+DJ&&DJJ&7V$**g.

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

66t7H7HIf **W-DK!N!33FJJz4JKDN!NF" $ 6 6vzz-7P QD!NV#!%!7!7

>8R!SD!N&$($:$:6::FW;X$YD!!N6!#55fjj6NOD!N F*(,(>(>vzzJ_?`(aD%!Nf **W-DK"JJy1DMV#!'N!;D&&D4F4F&G~~)dnn.B++GT5Q5QR#ZZ
3DN~~)dnn.B/3~~/G/GQUQhQh/i,,0NN,>,>,@DMM,QDW\!!%BB6Brx   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 |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 t$        | M  |      S )Nr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r'   r(   r)   )rL   rM   rD   rE   rH   rI   rJ   rK   rP   rQ   rN   rS   r_   rX   rY   r[   r\   r]   rB   cget)rt   r   rv   s     rw   r   zCTkCheckBox.cget3  sn   _,&&&~-%%%//'''00(((z)>>!},$$$~-%%%00(((|+###44,,,v%::v%::~-%%%w&;;w&;;y(== z)>>!z)>>!7<//rx   c                    | j                   r| j                  t        j                  k(  rt        j
                  dk(  rE| j                  j                  d       | j                  | j                  j                  d       y t        j
                  j                  d      rF| j                  j                  d       | j                  | j                  j                  d       y y y y | j                  t        j                  k(  rt        j
                  dk(  rF| j                  j                  d       | j                  | j                  j                  d       y y t        j
                  j                  d      rF| j                  j                  d       | j                  | j                  j                  d       y y y y y )Ndarwinarrow)cursorwinpointinghandhand2)_cursor_manipulation_enabledrX   rj   r   sysplatformrh   r   rO   
startswithNORMALr   s    rw   rr   zCTkCheckBox._set_cursor]  ss   ,,{{g...<<8+LL**'*:''3((22'2B\\,,U3LL**'*:''3((22'2B 4 4 4 .<<8+LL**.*A''3((22.2I 4\\,,U3LL**'*:''3((22'2B 4 4 / -rx   c                 `   | j                   du r| j                  t        j                  k(  r | j                  du r| j
                  j                  d| j                  | j                        | j                  | j                               | j
                  j                  d| j                  | j                        | j                  | j                               y | j
                  j                  d| j                  | j                        | j                  | j                               y y y NTr   )r   r   r   )	rY   rX   rj   r   rZ   rh   r   r   rI   rt   events     rw   r|   zCTkCheckBox._on_enters  s    ;;$4;;'..#@  D(''-1-H-HIZIZ-[040K0KDL]L]0^ ( ` ''-1-H-HIZIZ-[040K0KDL]L]0^ ( ` ''-1-H-HIZIZ-[040K0KDL]L]0^ ( ` $Arx   c                    | j                   du r| j                  j                  d| j                  | j                        | j                  | j                               | j                  j                  d| j                  | j                        | j                  | j                               y | j                  j                  d| j                  | j
                        | j                  | j
                               | j                  j                  d| j                  | j                        | j                  | j                               y r   )rZ   rh   r   r   rH   r   rJ   r   s     rw   r}   zCTkCheckBox._on_leave  s   $LL##M)-)D)DT^^)T,0,G,G,W $ Y LL##N)-)D)DT^^)T,0,G,G,W $ Y LL##M)-)D)DT^^)T,0,G,G,W $ Y LL##N)-)D)DTEWEW)X,0,G,GHZHZ,[ $ ]rx   c                    | j                   su| j                  j                         | j                  k(  r| j	                  d       y | j                  j                         | j
                  k(  r| j                  d       y y y )NT)from_variable_callback)r^   r]   rp   r[   selectr\   deselect)rt   var_nameindexmodes       rw   ro   zCTkCheckBox._variable_callback  sc    ..~~!!#t}}448##%7T: 8 /rx   c                    | j                   t        j                  k(  r| j                  du rd| _        | j	                          nd| _        | j	                          | j
                  Md| _        | j
                  j                  | j                  du r| j                  n| j                         d| _        | j                  | j                          y y y NTF)rX   rj   r   rZ   rs   r]   r^   setr[   r\   rW   r   s     rw   r~   zCTkCheckBox.toggle  s    ;;'..(  D($)!

$(!

~~)26/""D4E4E4M4==SWSaSab27/}}( ) )rx   c                     d| _         | j                          | j                  7|s4d| _        | j                  j	                  | j
                         d| _        y y y r   )rZ   rs   r]   r^   r   r[   rt   r   s     rw   r   zCTkCheckBox.select  sO     

>>%.D.2D+NNt}}-.3D+ /E%rx   c                     d| _         | j                          | j                  7|s4d| _        | j                  j	                  | j
                         d| _        y y y )NFT)rZ   rs   r]   r^   r   r\   r   s     rw   r   zCTkCheckBox.deselect  sO    !

>>%.D.2D+NNt~~..3D+ /E%rx   c                 N    | j                   du r| j                  S | j                  S )NT)rZ   r[   r\   r   s    rw   rp   zCTkCheckBox.get  s"     $ 1 1T 9t}}Mt~~Mrx   addc                     |dk(  s|du st        d      | j                  j                  ||d       | j                  j                  ||d       y)z called on the tkinter.Canvas +TzE'add' argument can only be '+' or True to preserve internal callbacks)r   N)
ValueErrorrh   r{   rO   )rt   ry   r&   r   s       rw   r{   zCTkCheckBox.bind  sO    s
cTkdee(G6hT:rx   funcidc                     |t        d      | j                  j                  |d       | j                  j                  |d       | j	                  |       y)z0 called on the tkinter.Label and tkinter.Canvas 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)ry   )r   rh   unbindrO   rq   )rt   ry   r   s      rw   r   zCTkCheckBox.unbind  sX     q r rHd+$/x0rx   c                 6    | j                   j                         S N)rO   focusr   s    rw   r   zCTkCheckBox.focus  s    %%''rx   c                 6    | j                   j                         S r   )rO   	focus_setr   s    rw   r   zCTkCheckBox.focus_set  s    ))++rx   c                 6    | j                   j                         S r   )rO   focus_forcer   s    rw   r   zCTkCheckBox.focus_force  s    ++--rx   r   )NN)F)r   )NNT))__name__
__module____qualname____doc__rj   r   r   intr   r   strr   tupler   Variableboolr   rC   rq   r   r   rV   r   rs   r   anyr   rr   r|   r}   ro   r~   r   r   rp   r{   r   r   r   r   __classcell__)rv   s   @rw   r   r      s     "!')(*04/39FCGFJGKJNEINR*9=?C%nn#;?,--.;?3jjj j "%	j
 #&j !)j  (}j !eCHo!56j $E#uS#X*>$?@j 'uS%S/-A'BCj  (c5c?.B(CDj #+5eCHo1E+F"Gj &eCsCx,@&ABj '/uS%S/5I/J&Kj" #j$  eWn 56%j&  %W%5%5t%;<'j( )j* +j,  S 14 78-j.  S//j0 !c?1j2 !!1!14!783jX
=# 
=*[S [ [O-W^RCh(03 (03 (0TC,`] ; "44NU38_ N;S ;( ;cSWiHX ;1s 13 1(,.rx   r   )rj   r   typingr   r   r   r   r   core_renderingr	   rF   r
   r   core_widget_classesr   r"   r   r   rA   rx   rw   <module>r      s.     
 8 8 %  & - I., I.rx   