
    |~g*                        d dl mZmZmZmZmZmZmZmZ d dl	Z	 e	j                  dd        e	j                  dd       d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlZdZ G d de      Z G d dej,                        Z G d dej0                        Z	 	 	 ddedededeeeeef         deeegdf      dee   deej8                     deeef   fdZy)    )DictListCallableOptionalIterableTupleUnionTypeNGtkz3.0Gdk)r   )r   )	GdkPixbuf)GLib)Gio)AnimBasegffffff?c                   L     e Zd Zdej                  ddf fdZdeddfdZ xZS )FadewindowreturnNc                 <    t         |   t               || _        y )N)state)super__init__OPACITY_STARTr   )selfr   	__class__s     :/usr/lib/python3/dist-packages/blueman/gui/Notification.pyr   zFade.__init__   s    }-    r   c                 :    || j                   j                  _        y N)r   propsopacity)r   r   s     r   state_changedzFade.state_changed   s    $)!r   )	__name__
__module____qualname__r   Windowr   floatr"   __classcell__r   s   @r   r   r      s-    szz d *5 *T *r   r   c                   N    e Zd Z	 	 	 	 ddedededeeeeef         deeegdf      dee   dee	j                     d	df fd
Zded	dfdZded	dfdZdej                  ded	dfdZddZddZddededeeegdf      d	dfdZde	j                  d	dfdZdeded	dfdZ xZS )_NotificationDialogNsummarymessage_timeoutactions
actions_cb	icon_name
image_datar   c                 V    t            d t        j                  j                  t        j
                  j                  d         j                  d       d}d _        i  _	        | _
        |r7|D ]2  }	|	d   }
|	d   }|
 j                  |<    j                  ||       |dz  }4 d j                  t        j                  j                  <   d j                  _         j!                  dd	       t#                _        d
 j                  _        | j                  _        | j                  _        | j                  _        t        j.                  j0                   j                  _        |r j5                  |d       n|r j7                  |        j9                  d j:                         d j                  _        d
 _        dddt@        jB                  dtD        f fd}dddt@        jB                  dtD        f fd} j9                  d|        j9                  d|       y )N)parenttypebuttonstextNotificationDialogd   Tr      closei^  2   F0   responseblueman_widgetr+   _eventr   c                     j                         t        j                  j                         d   k(  sj                  s=j
                  j                  j
                  j                         dd       d_        y)Nr   g      ?  startenddurationTF)
get_windowr   r&   
at_pointerenteredfaderanimate	get_stater@   rA   r   s     r   on_enterz._NotificationDialog.__init__.<locals>.on_enterI   s[     CJJ$9$9$;A$>>dll

"")=)=)?SSV"W#r   c                     t         j                  j                         sAd_        j                  j                  j                  j                         t        d       y)NFrC   rD   )r   r&   rI   rJ   rK   rL   rM   r   rN   s     r   on_leavez._NotificationDialog.__init__.<locals>.on_leaveO   sD    ::((*$

"")=)=)?]]`"ar   zenter-notify-eventzleave-notify-event)#r   r   r   MessageTypeQUESTIONButtonsTypeNONEset_nameactions_supportedr/   callback
add_buttonResponseTypeDELETE_EVENTr    secondary_use_markupresizer   rK   skip_taskbar_hinttitler7   secondary_textWindowPositionCENTERwindow_positionset_icon_from_icon_nameset_icon_from_pixbufconnectdialog_responser1   rJ   r   Eventbool)r   r,   r-   r.   r/   r0   r1   r2   ia	action_idaction_namerO   rQ   r   s   `             r   r   z_NotificationDialog.__init__   s    	3??+C+C!$!5!5D 	 	B 	*+!%')" aD	d"+QQ/Q 7>S%%223*.

'C$Z
',

$"

!

$+

!%(%7%7%>%>

"((B7%%j1Z!5!56(

	3 	SYY 	4 		3 	SYY 	4 	 	)84)84r   c                 &    || j                   _        y r   )r    r`   r   r-   s     r   set_messagez_NotificationDialog.set_messageX   s    $+

!r   c                 (    | j                  |d       y )Nr=   )rd   r   r1   s     r   set_notification_iconz)_NotificationDialog.set_notification_icon[   s    $$Y3r   _dialogr>   c                 x    | j                   r| j                  | j                  |          | j                          y r   )rX   r/   hide)r   rt   r>   s      r   rg   z#_NotificationDialog.dialog_response^   s'    ==MM$,,x01		r   c                 x    | j                  t               | j                          | j                  t               y r   )set_opacityr   presentr   s    r   showz_NotificationDialog.showc   s'    ''r   c                 $    | j                          y r   )rv   rz   s    r   r;   z_NotificationDialog.closeh   s    		r   
_action_id_label	_callbackc                 .    t        j                  d       y )Nstub)loggingwarning)r   r}   r~   r   s       r   
add_actionz_NotificationDialog.add_actionk   s    r   pixbufc                     t         j                  j                  |      }| j                  |       |j	                          y r   )r   Imagenew_from_pixbuf	set_imager{   )r   r   ims      r   re   z(_NotificationDialog.set_icon_from_pixbufn   s+    YY&&v.r
	r   sizec                 t    t        j                  ||      }| j                  |       |j                          y )N)r1   
pixel_size)r   r   r   r{   )r   r1   r   r   s       r   rd   z+_NotificationDialog.set_icon_from_icon_names   s'    YYt<r
	r   NNNNr   Nr   )r#   r$   r%   strintr   r   r   r   r   Pixbufr   rp   rs   r   Dialogrg   r{   r;   r   re   rd   r(   r)   s   @r   r+   r+      sB   CE@D`d:>;5 ;5c ;5S ;5"8E#s(O#<=;5%hud{&;<;5PXY\P];5 &i&6&67;5 DH;5z,3 ,4 ,4s 4t 4szz S T 
(
 S  #  (8UXTY[_T_K`Ba  mq  9+;+;  
 C D r   r+   c                       e Zd Z	 	 	 	 ddedededeeeeef         deeegdf      dee   dee	j                     d	df fd
Zded	dfdZded	dfdZed	eeeeef   fd       Zed	efd       Zdeded	dfdZded	dfdZd dZd!dededeeegdf      d	dfdZd dZdededej2                  d	dfdZd dZd dZ xZS )"_NotificationBubbleNr,   r-   timeoutr/   r0   r1   r2   r   c           
         t         |   dddt        j                  j                  t        j
                  j                         | j                          d| _        d| _	        g | _
        i | _        i | _        i dddd	d
d	dddddddddddddd	dd	dddddddddd| _        || _        || _        || _        d | _        |r|| _	        n|r|j$                  j&                  }|j$                  j(                  }	|j$                  j*                  }
|j$                  j,                  }|j$                  j.                  }|j$                  j0                  }|j3                         }t5        | j6                  d          }|d!k  rd}n|d"k  rd}n|d"k\  rd}nt9        d#      | j;                  |||	|
||||f       |r |D ]  }| j=                  |d$   |d%   |        | j?                         | _         y )&Norg.freedesktop.Notifications/org/freedesktop/Notifications)g_nameg_interface_nameg_object_path
g_bus_typeg_flagsr?    zaction-icons)b333333?category)sr   zdesktop-entryz
image-data)
(iiibiiay)r   r2   )r   皙?z
image-path)r   r   
image_path)r   r   	icon_data)r   r   residentz
sound-filez
sound-namezsuppress-sound)r   r   	transientx)rj   r   yurgency)r   r   r   r   r   Not supported by serverr   r:   )!r   r   r   BusTypeSESSIONDBusProxyFlagsrU   init	_app_name	_app_icon_actions
_callbacks_hints_supported_hints_body_summaryr.   
_return_idr    widthheight	rowstride	has_alphabits_per_sample
n_channels
get_pixelsr'   server_information
ValueErrorset_hintr   GetCapabilities_capabilities)r   r,   r-   r   r/   r0   r1   r2   whstridealphabitschanneldatasupported_speckeyactionr   s                     r   r   z_NotificationBubble.__init__z   sv    	2<:{{**&&++ 	 	- 			"#%<>/1!!J!!!! X!! -	!!
 -!! *!! *!! *!! 
!! (!! (!! h!! !! !! !!  x!!!$ 
&DN  &&A  ''A%%//F$$..E##33D &&11G((*D"4#:#:2#>?N#!#%"3&" !:;;MM#1feT7DIJ! Bq	6!9jAB "113r   c                 L    || _         | j                  | j                          y y r   )r   r   r{   ro   s     r   rp   z_NotificationBubble.set_message   s!    
??&IIK 'r   c                 L    || _         | j                  | j                          y y r   )r   r   r{   rr   s     r   rs   z)_NotificationBubble.set_notification_icon   s!    "??&IIK 'r   c                 &    | j                         }|S r   )GetServerInformation)r   infos     r   r   z&_NotificationBubble.server_information   s    *.*C*C*Er   c                     d| j                   v S )Nr/   )r   rz   s    r   rW   z%_NotificationBubble.actions_supported   s    D....r   r   valc                     || j                   vrt        d      | j                   |   \  }}|t        | j                  d         kD  rt        d      t	        j
                  ||      }|| j                  |<   y )NzUnsupported hintr   r   )r   r   r'   r   r   Variantr   )r   r   r   fmtspec_versionparams         r   r   z_NotificationBubble.set_hint   ss    d+++/00 11#6\% 7 7 ;<<677S#& Cr   c                     | j                   |= y r   r   )r   r   s     r   remove_hintz_NotificationBubble.remove_hint   s    [[r   c                     i | _         y r   r   rz   s    r   clear_hintsz_NotificationBubble.clear_hints   s	    r   rl   labelrX   c                 b    | j                   j                  ||g       |r|| j                  |<   y y r   )r   extendr   )r   rl   r   rX   s       r   r   z_NotificationBubble.add_action   s/    i/0)1DOOI& r   c                      g | _         i | _        y r   )r   r   rz   s    r   clear_actionsz!_NotificationBubble.clear_actions   s    r   _sender_namesignal_nameparamsc                    |j                         \  }}|| j                  k7  ry t        j                  |       |dk(  rm|dk(  rt        j                  d       y |dk(  rt        j                  d       y |dk(  rt        j                  d       y |dk(  rt        j                  d	       y y |d
k(  r%|| j
                  v r | j
                  |   |       y y y )NNotificationClosedr:   zThe notification expired.   z+The notification was dismissed by the user.   z;The notification was closed by a call to CloseNotification.   zUndefined/reserved reasons.ActionInvoked)unpackr   r   r   debugr   )r   r   r   r   notif_id
signal_vals         r   do_g_signalz_NotificationBubble.do_g_signal   s    %}}*t&Z ..Q9:qKLq[\q;< !O+T__,+
+J7 - ,r   c                    | j                   r| j                   nd}| j                  d| j                  || j                  | j                  | j
                  | j                  | j                  | j                  	      }|| _         y )Nr   z(susssasa{sv}i))	r   Notifyr   r   r   r   r   r   r.   )r   
replace_id	return_ids      r   r{   z_NotificationBubble.show  s[    (,T__Q
KK 14>>:t~~ $tzz4==$++ $/	 $r   c                     t        j                  d| j                  f      }| j                  d|t        j
                  j                  dd        d | _        y )Nz(u)CloseNotificationr   )r   r   r   	call_syncr   DBusCallFlagsrU   )r   r   s     r   r;   z_NotificationBubble.close  sA    UT__$67*E33D3D3I3I2tTr   r   r   r   )r#   r$   r%   r   r   r   r   r   r   r   r   r   rp   rs   propertyr   ri   rW   objectr   r   r   r   r   r   r   r   r{   r;   r(   r)   s   @r   r   r   y   s   BD@D`d:>E4 E4c E4C E4"8E#s(O#<=E4%hud{&;<E4PXY\P]E4 &i&6&67E4 DHE4N3 4 
s t 
 E#sC*<$=   /4 / /!C !f ! !s t 2C 2 2xRUQVX\Q\H]?^ 2jn 2
8 8# 8t|| 8X\ 8($r   r   r,   r-   r   r/   r0   r1   r2   r   c                    t        j                  d      d    }	 t        j                  t         j                  j                        }|j                  ddddd d t         j                  j                  dd 	      j                         d   }	|s
d	|	vs|rd
|	vrt        }
nt        }
 |
| ||||||      S # t        j                  $ r g }	Y >w xY w)Nzorg.blueman.general)	schema_idznotification-daemonr   r   r   r   r   bodyr/   )r   Settingsbus_get_syncr   r   r   r   rU   r   r   Errorr+   r   )r,   r-   r   r/   r0   r1   r2   forced_fallbackbuscapsklasss              r   Notificationr
    s     ,,1FGH]^^Os{{223}}<>^<>OQUW[ ..33R??EvxK &,Yd=R
 H[#'7GZJWW :: s   A/B2 2C
	C
r   )typingr   r   r   r   r   r   r	   r
   girequire_versiongi.repositoryr   r   r   r   r   blueman.gui.GtkAnimationr   r   r   r   MessageDialogr+   	DBusProxyr   r   r   r   r
   r   r   <module>r     s   O O O 	   5%     5%     #   - *8 *\#++ \~R#-- Rj pt`d:>X# X Xc XRZ[`adfiai[jRkIl X%hud{&;<XPXY\P]X%i&6&67XCHI\^qIqCrXr   