
    |~g+                        d dl Z d dlZd dl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 d dl 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mZmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$Z%d dl&m'Z' d dl(Z( e(jR                  dd        e(jR                  dd       d dl*m+Z+m,Z,m-Z-m.Z.  G d de+j^                        Z0y)    N)gettext)OptionalAnyTuple)Adapter)Device)Manager)*)ManagerDeviceList)ManagerToolbar)ManagerMenu)ManagerStats)ManagerProgressbar)Builder)AppletServiceDBusProxyFailed)ErrorDialog)Notification)PluginManager)ManagerPluginGtkz3.0Gdk)r   Gior   GLibc            	           e Zd ZU d fdZeej                     ed<   ddZddZ	de
j                  dej                  ddfd	Zd
ej                  dej                   defdZdededdfdZddZd dedee   deddfdZdej0                  deddfdZededdfd       Zedd       Zededdfd       Zededdfd       Z deddfdZ!deddfdZ" xZ#S )!BluemanreturnNc                      t            d       dt        dt        f fd}t	        j
                  t        j                        }|j                  |       |j                          y )Nzorg.blueman.Manager)application_id_r   c                 &    j                          yNFquit)r    selfs    6/usr/lib/python3/dist-packages/blueman/main/Manager.pydo_quitz!Blueman.__init__.<locals>.do_quit!   s    IIK    )
super__init__objectboolr   unix_signal_source_newsignalSIGINTset_callbackattach)r%   r'   s	__class__s   `  r&   r*   zBlueman.__init__   sR    (=>	v 	$ 	 ''6	w	
r(   windowc                 `    dt         j                  dd dd f fd}t        j                  j	                          d  _        t        j                  d       _        t        d       _	        t         j                  j                  dd       }|j                  d	|        j                  d
ddg        j                  |       t         j                  j                  dd t        j                   j#                  d            }|j                  d j$                          j                  |       y )N_a_paramr   c                 &    j                          y Nr#   )r6   r7   r%   s     r&   doquitz"Blueman.do_startup.<locals>.doquit,   s    IIKr(   zorg.blueman.general)	schema_idzmanager-main.uiQuitactivatezapp.Quitz<Ctrl>qz<Ctrl>wbluetooth_statusFzchange-state)r   SimpleActionr   Application
do_startupr4   SettingsConfigr   buildernewconnectset_accels_for_action
add_actionnew_statefulr   Variantnew_boolean_on_bt_state_changed)r%   r:   quit_actionbt_status_actions   `   r&   rA   zBlueman.do_startup+   s    	s'' 	 	$ 	 	""4(ll-BC01&&**648J/"":	9/EF$++889KTSWS_S_SkSklqSrs  1J1JK()r(   c           
      ~   	
  j                   s j                  j                  dt        j                         _          j                   j                           j                  d   \  }}}}|r|r j                   j                  ||       |r|r j                   j                  ||        j                   j                  d j                          j                  j                  dt        j                        
 j                  j                  dt        j                        	 j                  j                  dt        j                         _         j                  j                  d j                         d _        t#        t$        t&        j(                  j*                          _         j,                  j/                           j                   j1                         r$	j3                         }	j5                  |d	z          d
t6        dt8        dt8        dt:        j<                  dd f
 fddt>        j@                  dt8        dd f fd}dt>        j@                  dt8        dt8        dd f 	
fd}tC        jD                  ||        j                   jG                  t        jH                                y )Nmanager_windowwindow-propertieszconfigure-eventtoolbar	statusbarmessage_arearesponse 
   _proxy_sendersignal_nameparamsr   c                     |dk(  rS|j                         d   }j                  d      }|j                  t        j                  j                  |             y y )NBluetoothStatusChangedr   r>   )unpacklookup_actionchange_stater   rJ   rK   )rX   rY   rZ   r[   statusactionr%   s         r&   on_applet_signalz-Blueman.do_activate.<locals>.on_applet_signal[   sO    "::#]]_Q/F!//0BCF''(@(@(HI ;r(   _connectionnamec                    t        j                  |       j                  j                  j                          t	        t        d      t        d      d      }|j                          |j                          j                          y )NzConnection to BlueZ failedzBluez daemon is not running, blueman-manager cannot continue.
This probably means that there were no Bluetooth adapters detected or Bluetooth daemon was not started.blueman	icon_name)	logginginfor4   hider   r    rundestroyr$   )rd   re   dr%   s      r&   on_dbus_name_vanishedz2Blueman.do_activate.<locals>.on_dbus_name_vanisheda   sm    T";;*KK$$&23 = > () 		 		r(   ownerc                    t        j                  | d|        t                	 t               _        j                  j                  d       j                  j                  dt        j                        }t        j                         dk\  rd|j                  _        t!        j"                  d         _        j$                  j'                          |j)                  j$                         t+              _        t/              _        t3              _        j$                  j7                         rj$                  j9                          j$                  j                  d	j:                         j"                  j=                  d
dt>        j@                  jB                         j"                  j=                  ddt>        j@                  jB                         jE                  d      }|jG                  tH        jJ                  jM                  j                  jO                                      y # t        $ r t        d       t                Y w xY w)N zg-signalz"Blueman applet needs to be running
scrollview   Fzlast-adapter)adapterinstzadapter-changedzshow-toolbarvisiblezshow-statusbarr>   )(rj   rk   setup_icon_pathr   AppletrF   r   printbmexitrD   
get_widgetr   ScrolledWindowget_minor_versionpropsoverlay_scrollingr   rC   Listshowaddr   Toolbarr   Menur   Statsis_valid_adapterpopulate_deviceson_adapter_changedbindr   SettingsBindFlagsDEFAULTr_   r`   r   rJ   rK   GetBluetoothStatus)	rd   re   rq   swrN   rc   r%   rS   rR   s	        r&   on_dbus_name_appearedz2Blueman.do_activate.<locals>.on_dbus_name_appeareds   s   vQug./!"//DKKK''
4DE
 \\,,\3;M;MN((*b016BHH.-dkk.6QX\]			 tyy!-d3'-	)$/
99--/II..0		!!"3T5L5LM  )SEZEZEbEbc  !19iI^I^IfIfg#'#5#56H#I  --dll.F.Ft{{GeGeGg.hi7 ' >?Hs   +I I('I()%r4   rD   r}   r   ApplicationWindowset_applicationrC   resizemoverF   _on_configurer   BoxInfoBar_infobar_infobar_response_infobar_btr   r   rg   pluginsmanagerPluginsload_pluginget_has_resize_gripget_margin_rightset_margin_rightr   strr   rJ   r   DBusConnectionr	   watch_name_ownerpresent_with_timeget_current_event_time)r%   whxymargin_rightrp   r   rc   rS   rR   s   `       @@@r&   do_activatezBlueman.do_activate?   s-   {{,,112BCDYDYZDKKK''-%89JAq!QQ""1a(Q  A& KK 143E3EFll--iEG//SWWEI LL33NCKKPDMMM!!*d.D.DE$&D(8O8OQUVDLLL$$& {{..0(99;**<"+<=J J JSV J`d`l`l Jqu J33E3E S UY $"j33E3E "jS "jY\ "jae "j "jH $$%:<QR%%c&@&@&BCr(   rb   state_variantc                    |j                  |       |j                         }| j                  j                  d|       |rd}t	        d      }nd}t	        d      }| j
                  j                  dt        j                        }| j
                  j                  dt        j                        }|j                  |       ||j                  _        y )Nz(b)	bluetoothzClick to disable.zbluetooth-disabledzClick to enable.bt_status_boxim_bluetooth_status)	set_stater^   rz   SetBluetoothStatusr    rD   r}   r   r   Imageset_tooltip_textr   ri   )r%   rb   r   stateri   tooltip_textboximages           r&   rL   zBlueman._on_bt_state_changed   s    '$$&&&ue4#I01L,I/0Lll%%osww?''(=syyI\* )r(   _windoweventc                    | j                   d   \  }}}}|j                  |k7  s-|j                  |k7  s|j                  |k7  s|j                  |k7  r;|j                  |j                  |j                  |j                  g| j                   d<   y)NrQ   F)rC   r   r   widthheight)r%   r   r   r   r   r   r   s          r&   r   zBlueman._on_configure   st    "kk*=>vq!77a<577a<5;;%+?5<<SYCY05U\\577TYT[T[/\DKK+,r(   lstrv   c                 >    || j                   j                          y y r9   )r   r   )r%   r   rv   s      r&   r   zBlueman.on_adapter_changed   s    II&&( r(   c                     dt         dt        dt        t        t        f   dd f fd}dt         dt
        dd ffd}t         t        d      	      j                  d
 fd       dt        dd f fd} j                  j                  |        j                  j                  d|       j                  j                  d|      y )N_lst_adapter	key_valuer   c                     |\  }}|dk(  rJ|sGj                          j                  j                         j                  j                         y y y )NDiscovering)finalizer   
disconnect)	r   r   r   keyvalueprogs1s2r%   s	        r&   prop_changedz%Blueman.inquiry.<locals>.prop_changed   sK    "JCm#E		$$R(		$$R(	 -2#r(   fracc                     t        d|z
        dk  r"j                         sj                          y y j                  |       y )Ng      ?gh㈵>)absstartedstartfraction)r   r   r   s     r&   on_progressz$Blueman.inquiry.<locals>.on_progress   s8    3:')||~JJL & d#r(   	Searching)text	cancelledc                 8    j                   j                         S r9   )r   stop_discovery)r   r%   s    r&   <lambda>z!Blueman.inquiry.<locals>.<lambda>   s    DII,D,D,F r(   ec                 V    j                           j                  t        |         y r9   )r   infobar_updatee_)r   r   r%   s    r&   on_errorz!Blueman.inquiry.<locals>.on_error   s     MMODA'r(   error_handlerzdiscovery-progresszadapter-property-changed)r   r   r   r   r   floatr   r    rF   	Exceptionr   discover_devices)r%   r   r   r   r   r   r   s   `   @@@r&   inquiryzBlueman.inquiry   s    	)0 	)G 	)PUVY[^V^P_ 	)dh 	) 	)	$/ 	$u 	$ 	$ "$Q{^<["FG	(	 	(d 	( 			""":YY3[AYY9<Hr(   messagebtri   c                    |dk(  r4| j                   j                  t        j                  j                         n3| j                   j                  t        j                  j
                         | j                  j                  dt        j                        }| j                  j                  dt        j                        }| j                  j                  dt        j                        }|j                  |d       |1|j                  | d       | d| | _        |j                          n"|j                          |j                  |        | j                   j!                  d       | j                   j#                  d       y )	Ndialog-warningib_more_buttonib_icon
ib_messageru   u   …
T)r   set_message_typer   MessageTypeWARNINGINFOrD   r}   Buttonr   Labelset_from_icon_nameset_textr   r   rl   set_visibleset_revealed)r%   r   r   ri   more_buttonr   msg_lbls          r&   r   zBlueman.infobar_update   s   ((MM**3??+B+BCMM**3??+?+?@ll--.>

K''	399=,,)),		B  B/>y_-")"RD1Dy*!!$'""4(r(   info_barresponse_idc                     dt         f fd}t        j                  d|        |t        j                  j
                  k(  r/d _        |j                  d       t        j                  d|       y |dk(  rt        j                   j                  t        j                  j                  dt        j                  j
                   j                  	      }|j                  d
d        |j                  dd        |j!                          y y )Nr   c                  <     j                   j                  d       yr"   )r   r   )r%   s   r&   rl   z'Blueman._infobar_response.<locals>.hide   s    MM%%e,r(   z
Response: rV   F   r   T)parenttypemodalbuttonsr   rU   c                 "    | j                         S r9   rn   )ro   _is     r&   r   z+Blueman._infobar_response.<locals>.<lambda>   s    QYY[ r(   closec                 "    | j                         S r9   r  )ro   s    r&   r   z+Blueman._infobar_response.<locals>.<lambda>   s    aiik r(   )r,   rj   debugr   ResponseTypeCLOSEr   r   r   timeout_addMessageDialogr4   r   r   ButtonsTyperF   r   )r%   r   r   rl   dialogs   `    r&   r   zBlueman._infobar_response   s    	d 	 	
;-01#**000!D!!%(S$'A&&dkk@T@T\`/2/D/D4K[K[]FNN:'@ANN7$9:KKM r(   devicec                 F     dt         dd f fd} j                  |       y )Nr   r   c                     t        j                  |        dj                   dd    d}t        d|d      j	                          y )NzPairing failed for:
z (Address)	Bluetoothrg   rh   )rj   	exceptiondisplay_namer   r   )r   r   r  s     r&   r   z#Blueman.bond.<locals>.error_handler   sH    a -f.A.A-B"VIEVDWWXYGgCHHJr(   r   )r   pair)r  r   s   ` r&   bondzBlueman.bond   s)    	KY 	K4 	K
 	-0r(   c                  0    t        dt        d             y )Nzblueman-adapterszAdapter Preferencesre   )launchr     r(   r&   adapter_propertieszBlueman.adapter_properties  s    !*?(@Ar(   c                     | d    | d<   y )NTrustedr  r  s    r&   toggle_trustzBlueman.toggle_trust       &y 11yr(   c                     | d    | d<   y )NBlockedr  r!  s    r&   toggle_blockedzBlueman.toggle_blocked  r#  r(   c                     | j                   j                  }|sJ d|d    d|d    }t        |t        d             y )Nzblueman-sendto --source=r  z
 --device=zFile Senderr  )r   r   r  r    )r%   r  rv   commands       r&   sendzBlueman.send  sF    ))##w,WY-?,@
6R[K\J]^wQ}-.r(   c                 ~    | j                   j                  sJ | j                   j                  j                  |       y r9   )r   r   remove_device)r%   r  s     r&   removezBlueman.remove  s-    yy    		''/r(   )r   N)Nr   )$__name__
__module____qualname__r*   r   r   r   __annotations__rA   r   r   r?   r   rJ   rL   r   EventConfigurer,   r   r   r   r   r   r   r   intr   staticmethodr   r  r  r"  r&  r)  r,  __classcell__)r3   s   @r&   r   r      s|   	 S**++*(ZDx*3+;+; *DLL *]a *$S%:%: 3CUCU Z^ )&7 )# )$ )I8)c )x} )PS )ko ),#++ C D " 1V 1 1 1 B B 2V 2 2 2 2v 2$ 2 2/6 /d /0V 0 0r(   r   )1rj   r.   r   r    typingr   r   r   blueman.bluez.Adapterr   blueman.bluez.Devicer   blueman.bluez.Managerr	   blueman.Functions%blueman.gui.manager.ManagerDeviceListr   "blueman.gui.manager.ManagerToolbarr   blueman.gui.manager.ManagerMenur    blueman.gui.manager.ManagerStatsr   &blueman.gui.manager.ManagerProgressbarr   blueman.main.Builderr   blueman.main.DBusProxiesr   r   blueman.gui.CommonUir   blueman.gui.Notificationr   blueman.main.PluginManagerr   blueman.plugins.managerrg   blueman.plugins.ManagerPluginr   girequire_versiongi.repositoryr   r   r   r   r@   r   r  r(   r&   <module>rI     s        ' ' ) ' )  C = 7 9 E ( C , 1 4  7 	   5%     5%   - -|0coo |0r(   