
    |~g'                        d dl mZ d dlmZmZmZmZmZmZm	Z	m
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Zd dlZd dlZd dlmZmZmZmZmZ d dlZd dlZ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!m"Z" d dl#m$Z$m%Z% d dl&Z& e&jN                  dd	        e&jN                  d
d	       d dl(m)Z) d dl(m*Z* d dl(m+Z+ d dl(m,Z, g dZ-de.deg e
f   ddfdZ/	 	 	 	 	 d;de.deee.      de0dee.   de.de0de0fdZ1d<dZ2dee.   dee.   fdZ3de	e.e4f   dee.ee.   f   fdZ5d e6dee6e.f   fd!Z7	 	 	 d=d"e.dee.   d#ee+jp                     d$eejr                     de)jt                  f
d%Z;d&e.dee.   fd'Z<d>dee.   de=fd(Z>d)Z?d*Z@d+ZA	 	 	 d?d,e=de.d-ee.   d.ee.   d/e0dej                  fd0ZC	 	 	 d@d1eej                     d/e0d2e0dej                  fd3ZEd4e.d5e=de=fd6ZFde.d7ej:                  dee.   fd8ZGdee.ee.ee.   f   f   fd9ZHd>dee	e.e=f      ddfd:ZIy)A    )sleep)OptionalDictTupleListCallableIterableUnionAnyN)gettext)cdllbyrefcreate_string_buffersizeofc_long)AppletServiceDBusProxyFailed)BIN_DIR	ICON_PATHGtkz3.0Gdk)r   )r   )	GdkPixbuf)Gio)check_bluetooth_statuslaunchsetup_icon_pathadapter_path_to_namee_bmexitformat_bytescreate_menuitemhaveset_proc_titlecreate_loggercreate_parseropen_rfcommget_local_interfacesmessageexitfuncreturnc                    	 t               }d|j                         vry |j                         st        j                  t        j                  j                  dt        d      |       }|j                  t        d      t        j                  j                         |j                  t        d      t        j                  j                         |j!                         }|j#                          |t        j                  j                  k7  r |        y |j%                  dd	       |j                         st	        d
        |        y y # t        $ r1}t        j                  |       t	        d        |        Y d }~y d }~ww xY w)Nz"Blueman applet needs to be runningPowerManagerbluemanzBluetooth Turned Off)type	icon_nametextsecondary_textExitzEnable Bluetoothz(b)TzFailed to enable bluetooth)r   r   logging	exceptionprintQueryPluginsGetBluetoothStatusr   MessageDialogMessageTypeERROR_
add_buttonResponseTypeNOYESrundestroySetBluetoothStatus)r(   r)   appletedresps         3/usr/lib/python3/dist-packages/blueman/Functions.pyr   r   7   s+    V0022$$&&&))*7D 	
QvY 0 0 3 34	Q)*C,<,<,@,@Auuw			3##'''J
eT*$$&*+
 '1  !23
	s   
E
 
	F'E??Fcmdpathssystemr/   namesnc                    d}t        j                         }|dk(  rBt        j                  d       t	        t        j                  t
        j                              }nE|}t        j                  j                         }	|	sJ |	j                         }|j                  |       |rt        j                  j                  }
nt        j                  j                   }
t"        j$                  }t'        |      |d<   |s%t"        j(                  j+                  t,        |       } nt"        j(                  j/                  |       } |r-|D cg c]!  }t        j0                  j3                  |      # }}nd}|r||j5                  |       t        j6                  j9                  | ||
      }|j;                  ||      }|st        j<                  d|  d       |S c c}w )z*Launch a gui app with startup notificationNr   z+Gtk eventtime is 0, not using LaunchContextBLUEMAN_EVENT_TIMEz	Command: z failed)r   get_current_event_timer3   infointtimeclock_gettimeCLOCK_MONOTONIC_RAWr   Displayget_defaultget_app_launch_contextset_timestampr   AppInfoCreateFlagsSUPPORTS_STARTUP_NOTIFICATIONNONEosenvironstrpathjoinr   
expanduserFilenew_for_commandline_argset_icon_nameAppInfocreate_from_commandliner   error)rH   rI   rJ   r/   rK   rL   contextgtktimestamp	timestampdisplayflagsenvpfilesappinfolauncheds                   rG   r   r   W   su    G--/LqBC**4+C+CDE	 	++))+w002i(	&&DD&&++
**C #ICggll7C(gg  %X]*^ST388+K+KA+N*^*^W(i(kk11#tUCG^^E73H	#g./O +_s   &Gc                  j    t         j                  j                         } | j                  t               y N)r   	IconThemerV   prepend_search_pathr   )ics    rG   r   r      s"    		"	"	$B9%    r_   c                 f    | | dk(  ry t        j                  d|       }|r|j                  d      S y )N z.*(hci[0-9]*)   )researchgroup)r_   matchs     rG   r   r      s5    |trzII&-E{{1~rw   msgc                     t        | t              rt        |       t        j                         fS | j                         j                  d      d   }|d fS )Nz: )
isinstance	Exceptionr^   	traceback
format_excstripsplit)r   ss     rG   r   r      sH    #y!3x--///IIKd#B'$wrw   sizec                     t        |       } | dk  r| }t        d      }||fS d| cxk  rdk  rn n| dz  }t        d      }||fS d| cxk  rdk  rn n| dz  }t        d      }||fS | dz  }t        d      }||fS )Ni   Bi   KBi   @MBGB)floatr;   )r   retsuffixs      rG   r    r       s    ;Dd{3 ; 
	$	$Tk4 ; 	4!3	4k"4
 ; ()4;rw   r0   pixbufsurfacec                    t        j                  d      }|r+|j                  |t         j                  j                         n3|r|j                  |       n|r|j                  |       nt        d      t        j                  | |d      }|j                         }t        |t         j                        sJ |j                  d       |j                          |S )N   )
pixel_sizez5At least provide one of, icon name, surface or pixbufT)labelimageuse_underline)r   Imageset_from_icon_nameIconSizeMENUset_from_surfaceset_from_pixbuf
ValueErrorImageMenuItem	get_childr   
AccelLabelset_use_markupshow_all)r0   r/   r   r   r   itemchilds          rG   r!   r!      s     II$E  CLL,=,=>	w'	f%PQQ4uDIDNNEeS^^,,,	MMOKrw   tc                 P   t         j                  d   dz   }|j                  t         j                        D ]n  }t         j                  j                  ||       }t         j                  j                  |      }t        j                  |t         j                        }|si|sl|c S  y )NPATHz:/sbin:/usr/sbin)	r\   r]   r   pathsepr_   r`   existsaccessEX_OK)r   rI   r_   	exec_pathr   
executables         rG   r"   r"      s|    JJv!33EBJJ' GGLLq)		*YYy"((3
j rw   c                 ^   | s0t         j                  j                  t        j                  d         } t        j                  d      }t        t        |       dz         }| j                  d      |_
        |j                  dt        |      ddd      }|dk7  rt        j                  d       |S )zSet the process titler   z	libc.so.6rz   zUTF-8   zFailed to set process title)r\   r_   basenamesysargvr   LoadLibraryr   lenencodevalueprctlr   r3   rg   )rK   libcbuffr   s       rG   r#   r#      s     ww,K(DD	A.DW%DJzz"eDk1a3C
ax34Jrw   zW%(name)s %(asctime)s %(levelname)-8s %(module)s:%(lineno)s %(funcName)-10s: %(message)szF%(name)s %(levelname)s %(module)s:%(lineno)s %(funcName)s: %(message)sz%H.%M.%S	log_level
log_formatdate_fmtsyslogc                 H   |t         }|t        }t        j                  | ||       t        j                  d       }||_        |r[t        j                  j                  d      }t        j                  t              }|j                  |       |j                  |       |S )N)levelformatdatefmtz/dev/log)address)logger_formatlogger_date_fmtr3   basicConfig	getLoggerrK   handlersSysLogHandler	Formattersyslog_logger_formatsetFormatter
addHandler)r   rK   r   r   r   loggersyslog_handlersyslog_formatters           rG   r$   r$      s     "
"i
HMt$FFK ))77
7K",,-AB##$45.)Mrw   parserloglevelc                     | t        j                         } |r| j                  ddd       |r| j                  ddd       | S )	Nz
--loglevelLEVELwarning)destdefaultz--syslogr   
store_true)r   action)argparseArgumentParseradd_argument)r   r   r   s      rG   r%   r%     sL    
 ~((*Lw	JJXlKMrw   filemodec                 \   	 t        j                  | |t         j                  z  t         j                  z  t         j                  z        S # t
        $ rW}|j                  t        j                  k(  r4t        j                  |  d       t        d       t        | |      cY d }~S  d }~ww xY w)Nz is busy, delaying 2 seconds   )r\   openO_EXCL
O_NONBLOCKO_NOCTTYOSErrorerrnoEBUSYr3   r   r   r&   )r   r   errs      rG   r&   r&     s~    wwtTBII-=KLL 99#OOtf$@AB!HtT**s%   AA 	B+AB&B+%B&&B+sockc                    d}t        j                  d| j                  d            }	 t        j                  |j                         ||      }t        j                  |dd       S # t        $ r t        j                  d       Y y w xY w)Ni  256sutf-8zsiocgifnetmask failed      )structpackr   fcntlioctlfilenor   r3   rg   socket	inet_ntoa)rK   r   siocgifnetmaskbytebufr   s        rG   _netmask_for_ifacenamer   $  sw    Nkk&$++g"67Gkk$++-A
 C2J''	  -.s   %A& &BBc            
      n   d} t        j                   dd      }|j                         \  }}t        j                  dd|      }	 t	        j                  t        j
                  t        j                        5 }	 t        j                  |j                         | |      }t        j                  d|      \  }}|j                         }	i }
t        d|d	d
t!        t"              z  z         D ]]  }|	||dz    j%                  dd      d   j'                  d      }t	        j(                  |	|dz   |d	z          }t+        ||      }||f|
|<   _ 	 ddd       |
S # t        $ r# t        j                  d       i cY cddd       S w xY w# 1 sw Y   
S xY w# t        $ r t        j                  dd       i cY S w xY w)z8 Returns a dictionary of name:ip, mask key value pairs. i  r   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   iLi   zsiocgifconf failedNr   r   r   r       rz   r   r   zSocket creation failedT)exc_info)arraybuffer_infor   r   r   AF_INET
SOCK_DGRAMr   r   r   r   r3   rg   unpacktobytesranger   r   r   decoder   r   )siocgifconfnamesnames_addressnames_lengthmutable_byte_bufferr   mutated_byte_buffermax_bytes_outnames_address_outnamestrip_dictirK   ipaddrmasks                  rG   r'   r'   0  s   KKK\*E"'"3"3"5M< ++dD-@]]6>>6+<+<= 	/&+kk$++-Na&b#
 06}}TCV/W,M,mmoGG1mR!fVn2D-DE /q!b&)//q9!<CCGL))'!b&!b&*AB-dD9!'	/	/( N#  23		/ 	/	/( N	  .>	s[   2F 6F8%EB+F	F  E?3F4	F >E??FFF F "F43F4c                     t        |       rs   )
SystemExit)r   s    rG   r   r   O  s    
S/rw   )NFNr-   T)r*   N)NNNrs   )NNF)NTT)JrR   r   typingr   r   r   r   r   r	   r
   r   r{   r\   r   r   r   r;   r3   logging.handlersr   ctypesr   r   r   r   r   r   r   r   r   r   cairoblueman.main.DBusProxiesr   r   blueman.Constantsr   r   girequire_versiongi.repositoryr   r   r   r   __all__r^   r   boolr   r   r   r   r   r   r    PixbufSurfacer   r!   r"   rQ   r#   r   r   r   Loggerr$   r   r%   r&   r   r'   r    rw   rG   <module>r%     s,  &  N N N 	 	 
       D D        C 0 	   5%     5%     # #
C 8BG3D  D &*#0	0HSM"0 0 }	0
 0 	0 
0f&
x} # E#y.! eC#,>&? u ucz!2 (  $)-'+	
} Y%%& emm$	
 	2C HSM # # " j_  !%"
  sm	
  ^^4 15X,,-  	"	c 	 	 		( 	(FMM 	(hsm 	(d3c8C=.@(A#AB >sCx) T rw   