
    h                     Z    S SK JrJrJrJr   S SKJrJr   " S S5      r	g! \ a     Nf = f)    )TupleDictCallableList)ImageImageTkc            	           \ rS rSrSrSr   SSSSSS\\\4   4S	 jjr\	S
 5       r
S\4S jrS\4S jrS rS\S\4S jrS rS\S\\\4   4S jrS\\\4   SS4S jrS\\\4   SS4S jrS\S\SS4S jrSrg)CTkImage   aA  
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                     U R                   (       d  U R                  5         Xl        X l        U R	                  5         X0l        / U l        0 U l        0 U l        g 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       g/var/www/fran/franai/venv/lib/python3.13/site-packages/customtkinter/windows/widgets/image/ctk_image.py__init__CTkImage.__init__   sN    
 ''""$'%
8:%UW'TV&    c                 P     [         [        n  g ! [         a    [        S5      ef = f)Nz.PIL.Image and PIL.ImageTk couldn't be imported)r   r   	NameErrorImportError)cls_s     r   r   CTkImage._check_pil_import&   s0    	P'qAq 	PNOO	Ps    %callbackc                 :    U R                   R                  U5        g)z9add function, that gets called when image got configured N)r   appendr   r%   s     r   add_configure_callbackCTkImage.add_configure_callback-       %%,,X6r   c                 :    U R                   R                  U5        g)z<remove function, that gets called when image got configured N)r   remover(   s     r   remove_configure_callback"CTkImage.remove_configure_callback1   r+   r   c                 <   SU;   a-  UR                  S5      U l        0 U l        U R                  5         SU;   a-  UR                  S5      U l        0 U l        U R                  5         SU;   a  UR                  S5      U l        U R                   H
  nU" 5         M     g Nr   r   r   )popr   r   r   r   r   r   r   )r   kwargsr%   s      r   	configureCTkImage.configure5   s    F" &

= 9D.0D+ 6!%zz,7D-/D* VF+DJ 55HJ 6r   attribute_namereturnc                 p    US:X  a  U R                   $ US:X  a  U R                  $ US:X  a  U R                  $ g r1   )r   r   r   )r   r6   s     r   cgetCTkImage.cgetE   sA    ]*$$$\)###V#:: $r   c                    U R                   bJ  [        U R                   [        R                  5      (       d!  [        S[	        U R                   5       35      eU R
                  bJ  [        U R
                  [        R                  5      (       d!  [        S[	        U R
                  5       35      eU R                   c  U R
                  c  [        S5      eU R                   bw  U R
                  bi  U R                   R                  U R
                  R                  :w  a:  [        SU R                   R                   SU R
                  R                   S35      eg g g )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   CTkImage._check_imagesM   sL   (D<M<Mu{{1[1[^_cdhdudu_v^wxyy'
4;K;KU[[0Y0Y]^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    [        U R                  S   U-  5      [        U R                  S   U-  5      4$ )Nr      )roundr   )r   rA   s     r   _get_scaled_sizeCTkImage._get_scaled_size\   s1    TZZ]^34eDJJqMN<Z6[[[r   scaled_sizezImageTk.PhotoImagec                     XR                   ;   a  U R                   U   $ [        R                  " U R                  R	                  U5      5      U R                   U'   U R                   U   $ r   )r   r   
PhotoImager   resizer   rG   s     r   _get_scaled_light_photo_image&CTkImage._get_scaled_light_photo_image_   s]    99922;??;B;M;MdN_N_NfNfgrNs;tD++K822;??r   c                     XR                   ;   a  U R                   U   $ [        R                  " U R                  R	                  U5      5      U R                   U'   U R                   U   $ r   )r   r   rI   r   rJ   rK   s     r   _get_scaled_dark_photo_image%CTkImage._get_scaled_dark_photo_imagef   s]    88811+>>:A:L:LTM]M]MdMdepMq:rD**;711+>>r   appearance_modec                 H   U R                  U5      nUS:X  a  U R                  b  U R                  U5      $ US:X  a  U R                  c  U R                  U5      $ US:X  a  U R                  b  U R                  U5      $ US:X  a  U R                  c  U R                  U5      $ g g )Nlightdark)rE   r   rL   rO   r   )r   rA   rQ   rG   s       r   create_scaled_photo_image"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   )r   r   r   r   r   r   )NN)   rW   )__name__
__module____qualname____firstlineno____doc__r   r   intr   classmethodr   r   r)   r.   r4   stranyr9   r   floatrE   rL   rO   rU   __static_attributes__ 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
   rc   r   r   <module>rf      s5    . .	"
pC pC	  		s   ! **