
    |~gw                         d dl m Z d dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ  G d d	      Z G d
 d      Z G d d      Z G d dee	j                        Zy)    )gettext)
itemgetter)OptionalTupleList)GObjectGLibGio)launch)PluginManager)AppletPluginc                   "    e Zd Zdeeef   fdZy) StatusIconImplementationProviderreturnc                      y)N)GtkStatusIconr    selfs    C/usr/lib/python3/dist-packages/blueman/plugins/applet/StatusIcon.py#on_query_status_icon_implementationzDStatusIconImplementationProvider.on_query_status_icon_implementation   s    !    N)__name__
__module____qualname__r   strintr   r   r   r   r   r      s    "U38_ "r   r   c                       e Zd ZdefdZy)StatusIconVisibilityHandlerr   c                      yNFr   r   s    r   %on_query_force_status_icon_visibilityzAStatusIconVisibilityHandler.on_query_force_status_icon_visibility   s    r   N)r   r   r   boolr"   r   r   r   r   r      s    t r   r   c                       e Zd Zdee   fdZy)StatusIconProviderr   c                      y Nr   r   s    r   on_status_icon_query_iconz,StatusIconProvider.on_status_icon_query_icon   s    r   N)r   r   r   r   r   r(   r   r   r   r%   r%      s    8C= r   r%   c                   2   e Zd ZU dZddgZdZdZee   e	d<   dZ
d dZd!ded	eddfd
ZdefdZded	eddfdZdeddfdZdee   ddfdZdej(                  deddfdZd dZdeddfdZdeddfdZdeddfdZdee   deddfdZdee   fdZdefdZy)"
StatusIconzbluetooth-symbolicStandardItemsMenuNvisibility_timeoutr   c                     t         j                   j                          t        d       _        d _        t        j                  d       _         j                  j                  d j                          j                  d        j                  j                  j                  d j                          j                  j                  j                  d	 j                          j                  d
dd fd        j                  dd        j                  dd        j                  dd        j                  ddd fd        j                  ddd fd        j                  dd        j                  ddd j                           j                  ddd j"                          j                  ddd j                  j                  j$                  j&                         y )NzBluetooth Enabled zorg.blueman.general)	schema_idzchanged::symbolic-status-iconsF)emitzplugin-loadedzplugin-unloadedGetVisibilityr   bc                       j                   S r'   )visibler   s   r   <lambda>z$StatusIcon.on_load.<locals>.<lambda>1   s     r   VisibilityChangedToolTipTitleChangedsToolTipTextChangedGetToolTipTitlec                       j                   S r'   )_tooltip_titler   s   r   r6   z$StatusIcon.on_load.<locals>.<lambda>5   s    $BUBU r   GetToolTipTextc                       j                   S r'   )_tooltip_textr   s   r   r6   z$StatusIcon.on_load.<locals>.<lambda>6   s    ASAS r   IconNameChangedGetStatusIconImplementationsasGetIconNameActivate)r   __init___r=   r@   r
   Settingsgeneral_configconnecton_symbolic_config_changequery_visibilityparentPlugins_on_plugins_changed_add_dbus_method_add_dbus_signal _get_status_icon_implementations_get_icon_namer+   
on_devicesr   s   `r   on_loadzStatusIcon.on_load$   s     & 34!ll5JK##$DdFdFde5)##OT5M5MN##$5t7O7OPor38LM1373S92C8/S:UV.C9ST/5<b$HmHmnmRd6I6IJj"b$++2E2E2S2S2^2^_r   delay_hidingr1   c                 r   | j                   j                  j                         s9t        d | j                   j                  j                  t              D              r| j                  d|       y | j                  s;|r&t        j                  d| j                        | _        y | j                  d|       y y )Nc              3   <   K   | ]  }|j                           y wr'   )r"   .0plugins     r   	<genexpr>z.StatusIcon.query_visibility.<locals>.<genexpr>>   s#      b ;;= b   Ti	  F)rM   Managerget_adaptersanyrN   get_loaded_pluginsr   set_visibler-   r	   timeout_addon_visibility_timeout)r   rV   r1   s      r   rL   zStatusIcon.query_visibility<   s    ;;++- b![[00CCD_`b bT4(((*.*:*:4A[A[*\'  -	 )r   c                     | j                   J t        j                  | j                          d | _         | j                          yr!   )r-   r	   source_removerL   r   s    r   rd   z StatusIcon.on_visibility_timeoutG   s?    &&2224223"&r   r5   c                 <    || _         |r| j                  d|       y y )Nr7   )r5   _emit_dbus_signal)r   r5   r1   s      r   rb   zStatusIcon.set_visibleN   s"    ""#6@ r   titlec                 6    || _         | j                  d|       y )Nr8   )r=   rh   )r   ri   s     r   set_tooltip_titlezStatusIcon.set_tooltip_titleS   s    #4e<r   textc                 R    |dn|| _         | j                  d| j                          y )Nr/   r:   )r@   rh   )r   rl   s     r   set_tooltip_textzStatusIcon.set_tooltip_textW   s'    #'<RT3T5G5GHr   settingskeyc                 $    | j                          y r'   )icon_should_change)r   ro   rp   s      r   rK   z$StatusIcon.on_symbolic_config_change[   s    !r   c                 d    | j                  d| j                                | j                          y )NrA   )rh   rS   rL   r   s    r   rr   zStatusIcon.icon_should_change^   s(    0$2E2E2GHr   _pathc                 $    | j                          y r'   rL   r   rt   s     r   on_adapter_addedzStatusIcon.on_adapter_addedb       r   c                 $    | j                          y r'   rv   rw   s     r   on_adapter_removedzStatusIcon.on_adapter_removede   ry   r   statec                 F    | j                          |rt        ddd       y y Nblueman-traybluemanF)	icon_namesn)rL   r   )r   r|   s     r   on_manager_state_changedz#StatusIcon.on_manager_state_changedh   s"    >Y5A r   _plugins_namec                     | j                         }| j                  r| j                  |k7  r|| _        | j                  j                  rt	        ddd       y y r~   )rR   _implementationsrM   manager_stater   )r   r   r   implementationss       r   rO   zStatusIcon._on_plugins_changedm   sL    ??A$$(=(=(P$3D!;;$$>Y5A %r   c                     t        d | j                  j                  j                  t              D        t        d      d      D cg c]  \  }}|	 c}}dgz   S c c}}w )Nc              3   <   K   | ]  }|j                           y wr'   )r   rY   s     r   r\   z>StatusIcon._get_status_icon_implementations.<locals>.<genexpr>w   s#      e 779 er]      T)rp   reverser   )sortedrM   rN   ra   r   r   )r   implementationrG   s      r   rR   z+StatusIcon._get_status_icon_implementationsu   sd    8>e;;..AABbce1	9
 #4>1 
  	 s   	Ac                     d}| j                   j                  j                  t              D ]  }|j	                         }||} |j                  dd      }| j                  j                  d      r| d}|S )Nr   z	-symbolicr/   zsymbolic-status-icons)rM   rN   ra   r%   r(   replacerI   get_boolean)r   namer[   icons       r   rS   zStatusIcon._get_icon_name}   s}    kk))<<=OP 	F335D		 ||K,**+BCV9%Dr   )r   N)FT) r   r   r   __icon____depends__r5   r-   r   r   __annotations__r   rU   r#   rL   rd   rb   r   rk   rn   r
   rH   rK   rr   rx   r{   r   r   r   rO   r   rR   rS   r   r   r   r*   r*      sC   #H"F+KG(,,`0	.T 	. 	.QU 	.t A4 At A A
=s =t =IXc] It I"#,, "S "T "  c  d       Bd Bt B
BM,,G BPS BX\ B$s)  r   r*   N)r   rG   operatorr   typingr   r   r   gi.repositoryr   r	   r
   blueman.Functionsr   blueman.main.PluginManagerr   blueman.plugins.AppletPluginr   r   r   r%   r*   r   r   r   <module>r      sR       ( ( , , $ 4 5" "
 
 
rw rr   