U
    l±Ëh23  ã                   @   s   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 dd	lmZ dd
lmZmZ G dd„ deƒZdS )é    N)ÚUnionÚTupleÚCallableÚOptionalÚAnyé   )Ú	CTkCanvas)ÚThemeManager)Ú
DrawEngine)ÚCTkBaseClass)ÚCTkFont)ÚCTkImage)Úpop_from_dict_by_setÚcheck_kwargs_emptyc                       sv  e Zd ZdZdddddddd	hZd5eeee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f e	e	edœ‡ fdd„Z‡ fdd„Z‡ fdd„Zd6‡ fdd„	Zdd„ Zdd„ Z‡ fdd„Zdd„ Zd7‡ fd!d"„	Zd8‡ fd#d$„	Ze	ed%œ‡ fd&d'„Zd9e	ee	d)œd*d+„Zd:e	ee	 d,œd-d.„Zd/d0„ Zd1d2„ Zd3d4„ Z‡  Z S );ÚCTkLabelzÖ
    Label with rounded corners. Default is fg_color=None (transparent fg_color).
    For detailed information check out the documentation.

    state argument will probably be removed because it has no effect
    ÚcursorZjustifyÚpadxÚpadyZtextvariableÚstateZ	takefocusZ	underliner   é   NÚtransparentÚcenter)ÚmasterÚwidthÚheightÚcorner_radiusÚbg_colorÚfg_colorÚ
text_colorÚtext_color_disabledÚtextÚfontÚimageÚcompoundÚanchorÚ
wraplengthc                    sü  t ƒ j||||d |d kr*tjd d n| j|dd| _|d krPtjd d n|  |¡| _|d krŽdtjd kr„tjd d | _qš| j| _n|  |¡| _|d kr°tjd d n|| _|| _	|	| _
|| _|  |¡| _|| _t| jtƒrô| j | j¡ |
d krtƒ n|  |
¡| _t| jtƒr,| j | j¡ | jd	d
d | jd	d
d t| d	|  | j¡|  | j¡d| _| jjd	d	dd t | jƒ| _!t"j#| d	d	d	d	| j	| j|  | j¡| j
|  $| j¡d
| _%| j%j&f t'|| j(ƒŽ t)|dd |  *¡  |  ¡  |  +¡  d S )N)r   r   r   r   r   r   T©Ztransparencyr   r   r   r   r   )Zweight)r   Úhighlightthicknessr   r   Únswe©ÚrowÚcolumnÚsticky)
r   r'   r   r   Zborderwidthr$   r#   r%   r    r!   )Zraise_error),ÚsuperÚ__init__r	   ÚthemeÚ_check_color_typeÚ	_fg_colorÚ_text_colorÚ_text_color_disabledÚ_corner_radiusÚ_anchorÚ_textÚ_wraplengthÚ_check_image_typeÚ_imageÚ	_compoundÚ
isinstancer   Úadd_configure_callbackÚ_update_imager   Ú_check_font_typeÚ_fontÚadd_size_configure_callbackÚ_update_fontZgrid_rowconfigureZgrid_columnconfigurer   Ú_apply_widget_scalingÚ_desired_widthÚ_desired_heightÚ_canvasÚgridr
   Ú_draw_engineÚtkinterZLabelÚ_apply_font_scalingÚ_labelÚ	configurer   Ú_valid_tk_label_attributesr   Ú_create_gridÚ_draw)Úselfr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Úkwargs©Ú	__class__© úK/tmp/pip-unpacked-wheel-ckatmccg/customtkinter/windows/widgets/ctk_label.pyr.      sX    &"


ý

÷
zCTkLabel.__init__c                    sz   t ƒ j||Ž | jj|  | j¡|  | j¡d | jj|  | j	¡d | jj|  | j
¡d |  ¡  |  ¡  | jdd d S )N©r   r   ©r!   ©r%   T)Úno_color_updates)r-   Ú_set_scalingrE   rK   rB   rC   rD   rJ   rI   r?   r7   rM   r=   rN   )rO   ÚargsrP   rQ   rS   rT   rY   k   s     zCTkLabel._set_scalingc                    s   t ƒ  |¡ |  ¡  d S ©N)r-   Ú_set_appearance_moder=   )rO   Zmode_stringrQ   rS   rT   r\   v   s    zCTkLabel._set_appearance_modec                    sB   t ƒ  ||¡ | jj|  | j¡|  | j¡d |  ¡  |  ¡  d S )NrU   )	r-   Ú_set_dimensionsrE   rK   rB   rC   rD   rM   rN   )rO   r   r   rQ   rS   rT   r]   z   s    
ÿzCTkLabel._set_dimensionsc                 C   s6   | j j|  | j¡d | j ¡  | jjdddd dS )zX pass font to tkinter widgets with applied font scaling and update grid with workaround rV   r   r(   r)   N)rJ   rK   rI   r?   rE   Zgrid_forgetrF   ©rO   rS   rS   rT   rA   ‚   s    
zCTkLabel._update_fontc                 C   sL   t | jtƒr.| jj| j |  ¡ |  ¡ ¡d n| jd k	rH| jj| jd d S )N)r"   )r;   r9   r   rJ   rK   Zcreate_scaled_photo_imageZ_get_widget_scalingZ_get_appearance_moder^   rS   rS   rT   r=   ‹   s    ÿ

zCTkLabel._update_imagec                    s(   t | jtƒr| j | j¡ tƒ  ¡  d S r[   )r;   r?   r   Úremove_size_configure_callbackrA   r-   Údestroyr^   rQ   rS   rT   r`   ’   s    zCTkLabel.destroyc                 C   sD   | j dkr| j nd}| jjdd||  t| jt| jd ƒƒ¡d dS )z configure grid system (1x1) r   Ú r   é   )r*   r+   r,   r   N)r5   rJ   rF   rB   Úminr4   ÚroundÚ_current_height)rO   Ztext_label_grid_stickyrS   rS   rT   rM   —   s    ÿzCTkLabel._create_gridFc                    s  t ƒ  |¡ | j |  | j¡|  | j¡|  | j¡d¡}|dksD|r|  | j	¡dkr¢| j
jd|  | j¡|  | j¡d | jj|  | j¡|  | j¡|  | j¡d nL| j
jd|  | j	¡|  | j	¡d | jj|  | j¡|  | j¡|  | j	¡d | j
j|  | j¡d d S )Nr   Fr   Zinner_parts)ÚfillÚoutline)ZfgZdisabledforegroundÚbg)rh   )r-   rN   rG   Zdraw_rounded_rect_with_borderrB   Z_current_widthre   r4   Z_apply_appearance_moder1   rE   Z
itemconfigZ	_bg_colorrJ   rK   r2   r3   )rO   rX   Zrequires_recoloringrQ   rS   rT   rN   ž   s2    

ý

þ

þ

þ

þzCTkLabel._drawc                    s  d|kr |  d¡| _|  ¡  d}d|krB| j|  d¡dd| _d}d|kr`|  |  d¡¡| _d}d|kr~|  |  d¡¡| _d}d|kr¢|  d¡| _| jj	| jd d	|krøt
| jtƒrÄ| j | j¡ |  |  d	¡¡| _t
| jtƒrð| j | j¡ |  ¡  d
|krTt
| jtƒr| j | j¡ |  |  d
¡¡| _t
| jtƒrL| j | j¡ |  ¡  d|krz|  d¡| _| jj	| jd d|kr¨|  d¡| _| jj	| jd |  ¡  d|krÔ|  d¡| _| jj	|  | j¡d | jj	f t|| jƒŽ tƒ j	f d|i|—Ž d S )Nr   Tr   r&   r   r   r    )r    r!   r"   r#   )r#   r$   )r$   r%   rW   Úrequire_redraw)Úpopr4   rM   r0   r1   r2   r3   r6   rJ   rK   r;   r?   r   r_   rA   r>   r@   r9   r   Zremove_configure_callbackr=   r8   r<   r:   r5   r7   rB   r   rL   r-   )rO   ri   rP   rQ   rS   rT   rK   º   sT    



zCTkLabel.configure)Úattribute_nameÚreturnc                    s²   |dkr| j S |dkr| jS |dkr*| jS |dkr8| jS |dkrF| jS |dkrT| jS |dkrb| jS |dkrp| jS |d	kr~| jS |d
krŒ| j	S || j
kr¢| j |¡S tƒ  |¡S d S )Nr   r   r   r   r    r!   r"   r#   r$   r%   )r4   r1   r2   r3   r6   r?   r9   r:   r5   r7   rL   rJ   Úcgetr-   )rO   rk   rQ   rS   rT   rm   ð   s.    
zCTkLabel.cgetT)ÚsequenceÚcommandÚaddc                 C   s@   |dks|dkst dƒ‚| jj||dd | jj||dd dS )ú0 called on the tkinter.Label and tkinter.Canvas ú+TzE'add' argument can only be '+' or True to preserve internal callbacks)rp   N)Ú
ValueErrorrE   ÚbindrJ   )rO   rn   ro   rp   rS   rS   rT   rt     s    zCTkLabel.bind)rn   Úfuncidc                 C   s0   |dk	rt dƒ‚| j |d¡ | j |d¡ dS )rq   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)rs   rE   ÚunbindrJ   )rO   rn   ru   rS   rS   rT   rv     s    zCTkLabel.unbindc                 C   s
   | j  ¡ S r[   )rJ   Úfocusr^   rS   rS   rT   rw     s    zCTkLabel.focusc                 C   s
   | j  ¡ S r[   )rJ   Ú	focus_setr^   rS   rS   rT   rx     s    zCTkLabel.focus_setc                 C   s
   | j  ¡ S r[   )rJ   Úfocus_forcer^   rS   rS   rT   ry   "  s    zCTkLabel.focus_force)r   r   Nr   NNNr   NNr   r   r   )NN)F)F)NNT)NN)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__rL   r   Úintr   r   Ústrr   Útupler   r   r.   rY   r\   r]   rA   r=   r`   rM   rN   rK   Úanyrm   r   rt   rv   rw   rx   ry   Ú__classcell__rS   rS   rQ   rT   r      sf      ÿ             ð
ðR	6r   )rH   Útypingr   r   r   r   r   Zcore_renderingr   r/   r	   r
   Zcore_widget_classesr   r!   r   r"   r   Zutilityr   r   r   rS   rS   rS   rT   Ú<module>   s   