
    ࢉi                     X    d dl mZmZmZmZ 	 d dlmZmZ  G d d      Z	y# e$ r Y w xY w)    )TupleDictCallableList)ImageImageTkc            	           e Zd ZdZdZ	 	 	 ddddddeeef   fdZed	        Z	d
e
fdZd
e
fdZd ZdedefdZd Zdedeeef   fdZdeeef   ddfdZdeeef   ddfdZdededdfdZy)CTkImageaY  
    Class to store one or two PIl.Image.Image objects and display size independent of scaling:

    light_image: PIL.Image.Image for light mode
    dark_image: PIL.Image.Image for dark mode
    size: tuple (<width>, <height>) with display size for both images

    One of the two images can be None and will be replaced by the other image.
    FNlight_imagezImage.Image
dark_imagesizec                     | j                   s| j                          || _        || _        | j	                          || _        g | _        i | _        i | _        y N)	_checked_PIL_import_check_pil_import_light_image_dark_image_check_images_size_configure_callback_list_scaled_light_photo_images_scaled_dark_photo_images)selfr   r   r   s       w/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/customtkinter/windows/widgets/image/ctk_image.py__init__zCTkImage.__init__   sT    
 ''""$'%
8:%UW'TV&    c                 P    	 t         t        c}}y # t        $ r t        d      w xY w)Nz.PIL.Image and PIL.ImageTk couldn't be imported)r   r   	NameErrorImportError)cls_s     r   r   zCTkImage._check_pil_import&   s0    	P'DAq 	PNOO	Ps    %callbackc                 :    | j                   j                  |       y)z: add function, that gets called when image got configured N)r   appendr   r"   s     r   add_configure_callbackzCTkImage.add_configure_callback-       %%,,X6r   c                 :    | j                   j                  |       y)z= remove function, that gets called when image got configured N)r   remover%   s     r   remove_configure_callbackz"CTkImage.remove_configure_callback1   r'   r   c                 ,   d|v r-|j                  d      | _        i | _        | j                          d|v r-|j                  d      | _        i | _        | j                          d|v r|j                  d      | _        | j                  D ]	  } |         y Nr   r   r   )popr   r   r   r   r   r   r   )r   kwargsr"   s      r   	configurezCTkImage.configure5   s    F" &

= 9D.0D+ 6!%zz,7D-/D* VF+DJ 55 	HJ	r   attribute_namereturnc                 j    |dk(  r| j                   S |dk(  r| j                  S |dk(  r| j                  S y r,   )r   r   r   )r   r0   s     r   cgetzCTkImage.cgetE   sA    ]*$$$\)###V#:: $r   c                    | j                   Et        | j                   t        j                        s!t        dt	        | j                                | j
                  Et        | j
                  t        j                        s!t        dt	        | j
                               | j                   | j
                  t        d      | j                   u| j
                  h| j                   j                  | j
                  j                  k7  r:t        d| j                   j                   d| j
                  j                   d      y y y )Nz?CTkImage: light_image must be instance if PIL.Image.Image, not z>CTkImage: dark_image must be instance if PIL.Image.Image, not zECTkImage: No image given, light_image is None and dark_image is None.zCTkImage: light_image size z% must be the same as dark_image size .)r   
isinstancer   
ValueErrortyper   r   )r   s    r   r   zCTkImage._check_imagesM   sF   (D<M<Mu{{1[^_cdhdudu_v^wxyy'
4;K;KU[[0Y]^bcgcscs^t]uvww $)9)9)Adee (T-=-=-IdN_N_NdNdhlhxhxh}h}N}:4;L;L;Q;Q:RRwx|  yI  yI  yN  yN  xO  OP  Q  R  R O~-I(r   widget_scalingc                 n    t        | j                  d   |z        t        | j                  d   |z        fS )Nr      )roundr   )r   r9   s     r   _get_scaled_sizezCTkImage._get_scaled_size\   s1    TZZ]^34eDJJqMN<Z6[[[r   scaled_sizezImageTk.PhotoImagec                     || j                   v r| j                   |   S t        j                  | j                  j	                  |            | j                   |<   | j                   |   S r   )r   r   
PhotoImager   resizer   r>   s     r   _get_scaled_light_photo_imagez&CTkImage._get_scaled_light_photo_image_   s_    $99922;??;B;M;MdN_N_NfNfgrNs;tD++K822;??r   c                     || j                   v r| j                   |   S t        j                  | j                  j	                  |            | j                   |<   | j                   |   S r   )r   r   r@   r   rA   rB   s     r   _get_scaled_dark_photo_imagez%CTkImage._get_scaled_dark_photo_imagef   s_    $88811+>>:A:L:LTM]M]MdMdepMq:rD**;711+>>r   appearance_modec                 8   | j                  |      }|dk(  r| j                  | j                  |      S |dk(  r| j                  | j                  |      S |dk(  r| j                  | j                  |      S |dk(  r| j                  | j                  |      S y y )Nlightdark)r=   r   rC   rE   r   )r   r9   rF   r>   s       r   create_scaled_photo_imagez"CTkImage.create_scaled_photo_imagem   s    ++N;g%$*;*;*G55kBB'D,=,=,E44[AA&4+;+;+G44[AA&4+;+;+C55kBB ,D&r   )NN)   rK   )__name__
__module____qualname____doc__r   r   intr   classmethodr   r   r&   r*   r/   stranyr3   r   floatr=   rC   rE   rJ    r   r   r
   r
      s
      /3-1)1W+W*W S#XW" P P7x 77( 7 3 3 R\u \sCx \@sCx @Ma @?c3h ?L` ?C CPS CXl Cr   r
   N)
typingr   r   r   r   PILr   r   r   r
   rU   r   r   <module>rX      s5    . .	"
pC pC	  		s   ! ))