U
    l±Ëh;  ã                   @   sÔ   d dl mZmZmZmZ zd dl mZ W n  ek
rH   d dlmZ Y nX d dlZd dl	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 ddlmZ ddlmZ G dd„ dejeeƒZdS )é    )ÚUnionÚTupleÚOptionalÚAny)ÚLiteralNé   )ÚCTkFrame)ÚCTkScrollbar)ÚCTkAppearanceModeBaseClass)ÚCTkScalingBaseClass)ÚCTkBaseClass)ÚCTkLabel)ÚCTkFont)ÚThemeManagerc                       sØ  e Zd Zd<eeeeeeef  eeeef  eeeeef f eeeeeef f  eeeeeef f  eeeeeef f  eeeeeef f  eeeeeef f  eeeeeef f  eeeeeef f  eeee	e
f  eed dœd	d
„Zdd„ Zdd„ Z‡ fdd„Z‡ fdd„Zd=dd„Zdd„ Zedœdd„Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Z d4d5„ Z!d6d7„ Z"d>d8d9„Z#d?d:d;„Z$‡  Z%S )@ÚCTkScrollableFrameéÈ   NÚtransparentÚ ÚcenterÚvertical)r   Ú
horizontal)ÚmasterÚwidthÚheightÚcorner_radiusÚborder_widthÚbg_colorÚfg_colorÚborder_colorÚscrollbar_fg_colorÚscrollbar_button_colorÚscrollbar_button_hover_colorÚlabel_fg_colorÚlabel_text_colorÚ
label_textÚ
label_fontÚlabel_anchorÚorientationc              
      sp  |ˆ _ |ˆ _|ˆ _t|dd|||||dˆ _tjˆ jddˆ _ˆ  ¡  ˆ j dkr€t	ˆ jdˆ jj
|	|
|dˆ _ˆ jjˆ jjd n8ˆ j dkr¸t	ˆ jdˆ jj|	|
|dˆ _ˆ jjˆ jjd |ˆ _tˆ j|||ˆ j d	¡||d krìtjd
 d n|dˆ _tjjˆ ˆ jdd t ˆ ¡ tjˆ dd ˆ  ¡  ˆ jjˆ  ˆ j¡ˆ  ˆ j¡d ˆ  d‡ fdd„¡ ˆ j dˆ j¡ ˆ jdˆ jdd ˆ jdˆ jdd ˆ jdˆ jdd ˆ jdˆ j dd ˆ jdˆ j dd ˆ jj!ddˆ ddˆ _"ˆ j d¡dkr,tjjˆ ˆ  #ˆ j d¡¡d ˆ jjˆ  #ˆ j d¡¡d n:tjjˆ ˆ  #ˆ j d¡¡d ˆ jjˆ  #ˆ j d¡¡d d ˆ _$d S )!Nr   )r   r   r   r   r   r   r   r   )r   Zhighlightthicknessr   )r   r'   Úcommandr   Úbutton_colorÚbutton_hover_color)Zxscrollcommandr   )Zyscrollcommandr   r   r"   )ÚtextÚanchorÚfontr   Ú
text_colorr   Úwidget)Zscaling_type©r   r   z<Configure>c                    s   ˆ j jˆ j  d¡dS )NÚall)Zscrollregion)Ú_parent_canvasÚ	configureZbbox)Úe©Úself© úV/tmp/pip-unpacked-wheel-ckatmccg/customtkinter/windows/widgets/ctk_scrollable_frame.pyÚ<lambda>K   ó    z-CTkScrollableFrame.__init__.<locals>.<lambda>z<MouseWheel>ú+)Úaddz<KeyPress-Shift_L>z<KeyPress-Shift_R>z<KeyRelease-Shift_L>z<KeyRelease-Shift_R>Únw)Zwindowr,   r   r   r   ©ÚbgF)%Ú_orientationÚ_desired_widthÚ_desired_heightr   Ú_parent_frameÚtkinterZCanvasr2   Ú_set_scroll_incrementsr	   ÚxviewÚ
_scrollbarr3   ÚsetÚyviewÚ_label_textr   Úcgetr   ÚthemeÚ_labelÚFrameÚ__init__r
   r   Ú_create_gridÚ_apply_widget_scalingÚbindÚ_fit_frame_dimensions_to_canvasZbind_allÚ_mouse_wheel_allÚ_keyboard_shift_press_allÚ_keyboard_shift_release_allZcreate_windowÚ_create_window_idÚ_apply_appearance_modeÚ_shift_pressed)r6   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r7   r5   r8   rO      sh    
   ÿ
  ÿ
  ÿ
 þ

ÿzCTkScrollableFrame.__init__c                 C   s$   t j | ¡ t | ¡ t | ¡ d S ©N)rD   rN   Údestroyr
   r   r5   r7   r7   r8   r[   ]   s    
zCTkScrollableFrame.destroyc                 C   sH  |   | j d¡| j d¡ ¡}| jdkr®| jjddd | jjddd | jjddd||dfd | jjd	dd|d
 | j	d k	r¢| j	dkr¢| j
jddd||d n
| j
 ¡  n–| jdkrD| jjddd | jjddd | jjddd|df|d | jjddd|d | j	d k	r:| j	dkr:| j
jddd	d||d n
| j
 ¡  d S )Nr   r   r   r   r   )ZweightZnsew)ÚrowÚcolumnÚstickyÚpadxÚpadyé   )r\   r]   r^   r_   r   Úewr   )r\   r]   r^   r`   )r\   r]   Z
columnspanr^   r_   r`   )rQ   rC   rK   r@   Zgrid_columnconfigureZgrid_rowconfigurer2   ÚgridrG   rJ   rM   Úgrid_forget)r6   Zborder_spacingr7   r7   r8   rP   b   s"    
zCTkScrollableFrame._create_gridc                    s–   t ƒ  |¡ | j d¡dkrXtjj| |  | j d¡¡d | jj|  | j d¡¡d n:tjj| |  | j d¡¡d | jj|  | j d¡¡d d S )Nr   r   r   r>   )	ÚsuperÚ_set_appearance_moderC   rK   rD   rN   r3   rX   r2   )r6   Zmode_string©Ú	__class__r7   r8   rf   {   s    z'CTkScrollableFrame._set_appearance_modec                    s2   t ƒ  ||¡ | jj|  | j¡|  | j¡d d S ©Nr0   )re   Ú_set_scalingr2   r3   rQ   rA   rB   )r6   Znew_widget_scalingZnew_window_scalingrg   r7   r8   rj   …   s    
ÿzCTkScrollableFrame._set_scalingc                 C   s@   |d k	r|| _ |d k	r|| _| jj|  | j ¡|  | j¡d d S ri   )rA   rB   r2   r3   rQ   )r6   r   r   r7   r7   r8   Ú_set_dimensions‹   s    
ÿz"CTkScrollableFrame._set_dimensionsc                 K   s€  d|kr| j | d¡d d|kr4| j | d¡d d|krt| d¡}| jj|d | jd k	rl| jj|d |  ¡  d|kr˜| jj| d¡d |  ¡  d	|krn| jj| d	¡d
 | j d	¡dkrtjj| |  	| j d¡¡d | j
j|  	| j d¡¡d n:tjj| |  	| j d	¡¡d | j
j|  	| j d	¡¡d |  ¡ D ]&}t|tƒrF|j| j d	¡d qFd|krŒ| jj| d¡d
 d|krª| jj| d¡d d|krÈ| jj| d¡d d|krö| d¡| _| jj| jd |  ¡  d|kr| jj| d¡d d|kr2| jj| d¡d d|krP| jj| d¡d
 d|krn| jj| d¡d | jjf |Ž d S )Nr   ©r   r   ©r   r   )r   r   )r   r   )r   r   r   r>   )r   r   r    )r)   r!   )r*   r$   )r+   r%   )r-   r#   )r.   r"   r&   )r,   )rk   ÚpoprC   r3   rM   rP   rK   rD   rN   rX   r2   Zwinfo_childrenÚ
isinstancer   rG   rJ   )r6   ÚkwargsZnew_corner_radiusÚchildr7   r7   r8   r3   ”   sT    










zCTkScrollableFrame.configure)Úattribute_namec                 C   sÌ   |dkr| j S |dkr| jS |dkr*| jS |dkr>| j d¡S |dkrR| j d¡S |dkrf| j d	¡S |d
krz| j d¡S | d¡r| j d	¡S | d¡r¦| j d¡S | d¡r¼| j d¡S | j |¡S d S )Nr   r   r$   r%   r-   r#   Z_text_colorr"   r   r&   r,   r   r    r)   r!   r*   )rA   rB   rJ   rM   rK   Ú
startswithrG   rC   )r6   rr   r7   r7   r8   rK   Ð   s*    


zCTkScrollableFrame.cgetc                 C   sJ   | j dkr$| jj| j| j ¡ d n"| j dkrF| jj| j| j ¡ d d S )Nr   rm   r   rl   )r@   r2   ZitemconfigurerW   Zwinfo_heightZwinfo_width©r6   Úeventr7   r7   r8   rS   ë   s    

z2CTkScrollableFrame._fit_frame_dimensions_to_canvasc                 C   s<   t j d¡r| jjddd nt jdkr8| jjddd d S )NÚwinr   )ZxscrollincrementZyscrollincrementÚdarwiné   é   )ÚsysÚplatformrs   r2   r3   r5   r7   r7   r8   rE   ñ   s    
z)CTkScrollableFrame._set_scroll_incrementsc                 C   s"  |   |j¡rtj d¡rx| jrL| j ¡ dkrv| j dt|j	d ƒ d¡ n*| j 
¡ dkrv| j 
dt|j	d ƒ d¡ n¦tjdkrÐ| jr¬| j ¡ dkrÎ| j d|j	 d¡ n"| j 
¡ dkrÎ| j 
d|j	 d¡ nN| jrú| j ¡ dkrø| j d|j	 d¡ n$| j 
¡ dkr| j 
d|j	 d¡ d S )Nrv   )g        g      ð?Zscrollé   Zunitsrw   )Úcheck_if_master_is_canvasr/   rz   r{   rs   rY   r2   rF   ÚintÚdeltarI   rt   r7   r7   r8   rT   ÷   s$    
z#CTkScrollableFrame._mouse_wheel_allc                 C   s
   d| _ d S )NT©rY   rt   r7   r7   r8   rU     s    z,CTkScrollableFrame._keyboard_shift_press_allc                 C   s
   d| _ d S )NFr€   rt   r7   r7   r8   rV     s    z.CTkScrollableFrame._keyboard_shift_release_allc                 C   s,   || j krdS |jd k	r$|  |j¡S dS d S )NTF)r2   r   r}   )r6   r/   r7   r7   r8   r}     s
    

z,CTkScrollableFrame.check_if_master_is_canvasc                 K   s   | j jf |Ž d S rZ   )rC   Úpack©r6   rp   r7   r7   r8   r     s    zCTkScrollableFrame.packc                 K   s   | j jf |Ž d S rZ   )rC   Úplacer‚   r7   r7   r8   rƒ      s    zCTkScrollableFrame.placec                 K   s   | j jf |Ž d S rZ   )rC   rc   r‚   r7   r7   r8   rc   #  s    zCTkScrollableFrame.gridc                 C   s   | j  ¡  d S rZ   )rC   Úpack_forgetr5   r7   r7   r8   r„   &  s    zCTkScrollableFrame.pack_forgetc                 K   s   | j  ¡  d S rZ   )rC   Úplace_forgetr‚   r7   r7   r8   r…   )  s    zCTkScrollableFrame.place_forgetc                 K   s   | j  ¡  d S rZ   )rC   rd   r‚   r7   r7   r8   rd   ,  s    zCTkScrollableFrame.grid_forgetc                 K   s   | j  ¡  d S rZ   )rC   Úgrid_remover‚   r7   r7   r8   r†   /  s    zCTkScrollableFrame.grid_removec                 K   s   | j  ¡  d S rZ   )rC   Úgrid_propagater‚   r7   r7   r8   r‡   2  s    z!CTkScrollableFrame.grid_propagatec                 K   s
   | j  ¡ S rZ   )rC   Ú	grid_infor‚   r7   r7   r8   rˆ   5  s    zCTkScrollableFrame.grid_infoc                 C   s   | j  |¡ d S rZ   )rC   Úlift)r6   Z	aboveThisr7   r7   r8   r‰   8  s    zCTkScrollableFrame.liftc                 C   s   | j  |¡ d S rZ   )rC   Úlower)r6   Z	belowThisr7   r7   r8   rŠ   ;  s    zCTkScrollableFrame.lower)r   r   NNr   NNNNNNNr   Nr   r   )NN)N)N)&Ú__name__Ú
__module__Ú__qualname__r   r~   r   r   Ústrr   Útupler   r   rO   r[   rP   rf   rj   rk   r3   rK   rS   rE   rT   rU   rV   r}   r   rƒ   rc   r„   r…   rd   r†   r‡   rˆ   r‰   rŠ   Ú__classcell__r7   r7   rg   r8   r      sv                   ííI

	<
r   )Útypingr   r   r   r   r   ÚImportErrorZtyping_extensionsrD   rz   Z	ctk_framer   Zctk_scrollbarr	   Zappearance_moder
   Zscalingr   Zcore_widget_classesr   Z	ctk_labelr   r-   r   rL   r   rN   r   r7   r7   r7   r8   Ú<module>   s   