U
    lh                     @   s6   d dl Z d dlZd dlZd dlmZ G dd dZdS )    N)Unionc                   @   sR   e Zd ZdZedd Zedeeef e	e	e	dddZ
eee	d	d
dZdS )FontManagerz	~/.fonts/c              
   C   s   t jdrz0tjtj| js8ttj| j W dS  t	k
r| } z"t j
dt| d  W Y dS d }~X Y qX ndS d S )NlinuxTFontManager error: 
F)sysplatform
startswithospathisdir
expanduserlinux_font_pathmkdir	Exceptionstderrwritestr)clserr r   S/tmp/pip-unpacked-wheel-ckatmccg/customtkinter/windows/widgets/font/font_manager.pyinit_font_manager   s    zFontManager.init_font_managerTF)	font_pathprivate
enumerablereturnc                 C   s   ddl m}m}m}m} d}d}	t|tr<||}
|jj}n$t|t	rX||}
|jj
}ntd|rh|nd|sr|	ndB }|||
|d}tt|dS )zr Function taken from: https://stackoverflow.com/questions/11993290/truly-custom-font-in-tkinter/30631309#30631309 r   )windllbyrefcreate_unicode_buffercreate_string_buffer       z&font_path must be of type bytes or str   )ctypesr   r   r   r    
isinstancebytesZgdi32ZAddFontResourceExAr   ZAddFontResourceExW	TypeErrorboolmin)r   r   r   r   r   r   r   r    Z
FR_PRIVATEZFR_NOT_ENUMZpath_bufferZadd_font_resource_exflagsZnum_fonts_addedr   r   r   windows_load_font   s    



zFontManager.windows_load_font)r   r   c              
   C   s   t jdr| j|dddS t jdrzt|tj| j	 W dS  t
k
r } z"t jdt| d  W Y dS d }~X Y qX ndS d S )NwinTF)r   r   r   r   r   )r   r   r	   r+   shutilcopyr
   r   r   r   r   r   r   r   )r   r   r   r   r   r   	load_font1   s    zFontManager.load_fontN)TF)__name__
__module____qualname__r   classmethodr   r   r   r&   r(   r+   r/   r   r   r   r   r      s   
 r   )r   r
   r-   typingr   r   r   r   r   r   <module>   s   