U
    lh                     @   sp  d dl Z d dlZ d dlZd dlZd dlZd dlmZ d dlmZ z,d dl	m
Z
mZmZmZ d dlmZ dZW n ek
r   dZY nX ze jdZe jd	ZW n< ek
r   e je jd
Ze je jdZY nX e jZe jZeej_eej_e  eeeeZ!e!defdZ"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)ee*gdf ddddZ+dS )    N)Path)Callable)NSObjectNSKeyValueObservingOptionNewNSKeyValueChangeNewKeyNSUserDefaults)	AppHelperTFzAppKit.framework/AppKitzlibobjc.dylibZAppKitobjcZobjc_msgSend)    Nr
   r
   c                 C   s   t | ts| d} | S )Nutf8)
isinstancebytesencode)s r   :/tmp/pip-unpacked-wheel-lmp10r8o/darkdetect/_mac_detect.py_utf8*   s    

r   c                 C   s   t t| S N)r	   sel_registerNamer   )namer   r   r   n/   s    r   c                 C   s   t t| S r   )r	   objc_getClassr   )	classnamer   r   r   C2   s    r   c            	      C   s   t d} t| td}t|td}td}t|td}td}t|tdtd}t|td	t|}t|td
}|d k	rt|}nd }t|td |d k	r|	dS dS d S )NNSAutoreleasePoolZallocinitr   standardUserDefaultsNSStringzstringWithUTF8String:AppleInterfaceStylezstringForKey:Z
UTF8Stringreleasezutf-8Light)
r	   r   msgr   r   r   void_pctypes	string_atdecode)	r   poolr   Z
stdUserDefr   keyZappearanceNSZappearanceCoutr   r   r   theme5   s     

r+   c                   C   s
   t  dkS )NZDarkr+   r   r   r   r   isDarkO   s    r-   c                   C   s
   t  dkS )Nr"   r,   r   r   r   r   isLightR   s    r.   c                  C   sX   ddl } |  | j| j d}G dd dt}| }t }|||td t	
  dS )zO
    Run by a child process, install an observer and print theme on change
    r   Nr    c                   @   s   e Zd Zdd ZdS )z_listen_child.<locals>.Observerc                 S   sJ   |t  }zt|d krdn| dd W n tk
rD   td Y nX d S )Nr"   T)flushr   )r   printIOErroros_exit)selfpathobjectZchangeDescriptioncontextresultr   r   r   /observeValueForKeyPath_ofObject_change_context_`   s
    zO_listen_child.<locals>.Observer.observeValueForKeyPath_ofObject_change_context_N)__name__
__module____qualname__r9   r   r   r   r   Observer_   s   r=   )signalSIGINTSIG_IGNr   newr   r   Z'addObserver_forKeyPath_options_context_r   r   ZrunConsoleEventLoop)r>   ZOBSERVED_KEYr=   Zobserverdefaultsr   r   r   _listen_childV   s    
   rC   )callbackreturnc              	   C   sT   t s
t tjtjddftjdttj	d}|j
D ]}| |  q4W 5 Q R X d S )Nz-cz*import _mac_detect as m; m._listen_child()T)stdoutuniversal_newlinescwd)_can_listenNotImplementedError
subprocessPopensys
executablePIPEr   __file__parentrF   strip)rD   pliner   r   r   listenerr   s    

rU   ),r%   Zctypes.utilrK   rM   r2   pathlibr   typingr   Z
Foundationr   r   r   r   ZPyObjCToolsr   rI   ModuleNotFoundErrorcdllLoadLibraryZappkitr	   OSErrorutilZfind_libraryc_void_pr$   c_uint64Zullr   restyper   	CFUNCTYPEZMSGPROTOTYPEr#   r   r   r   r+   r-   r.   rC   strrU   r   r   r   r   <module>   s@   
