
£à[]È  ã               @   s‚   d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l m Z e d  d l m	 Z	 Gd d „  d e	 ƒ Z
 d S)é    N)Úgettext)ÚGObject)ÚGdkX11)ÚInstallBackendc               @   sI   e  Z d  Z d Z d d „  Z d d d „ Z d d „  Z d	 d
 „  Z d S)ÚInstallBackendSynapticz# Install backend based on synaptic c             C   s)   d g } d  } |  j  |  j | | ƒ d  S)Nz--update-at-startup)Ú_run_synapticZACTION_UPDATE)ÚselfÚoptÚtempf© r   úN/usr/lib/python3/dist-packages/UpdateManager/backend/InstallBackendSynaptic.pyÚupdate   s    	zInstallBackendSynaptic.updateFc             C   s  g  } | r& | j  d ƒ | j  d ƒ | j  d ƒ | j  d t d ƒ ƒ | j  d ƒ | j  d t d ƒ ƒ t j d d	 ƒ } x# | | D] } | j d
 | ƒ q‹ Wx | D] } | j d | ƒ q­ W| j  d ƒ | j  d | j ƒ | j ƒ  |  j |  j | | ƒ d  S)Nz-ozSynaptic::closeZvt=truez--progress-strz%sz%Please wait, this can take some time.z--finish-strzUpdate is completeÚmodezw+z%s	install
z%s	deinstall
z--set-selections-file)	ÚappendÚ_ÚtempfileZNamedTemporaryFileÚwriteÚnameÚflushr   ZACTION_INSTALL)r   Zpkgs_installZpkgs_upgradeZpkgs_removeZclose_on_doner	   r
   Úpkg_namer   r   r   Úcommit   s"    
zInstallBackendSynaptic.commitc             C   sÜ   y t  j ƒ  Wn t k
 r" Yn X|  j j ƒ  } y | j ƒ  } Wn t k
 r\ d } Yn Xd d d d d d | g } | j | ƒ t j	 } t j
 | d | ƒ\ } }	 }
 } | | f |  _ t j | |  j |  j ƒ d	 S)
zExecute synaptic.r   z/usr/bin/pkexecz/usr/sbin/synapticz--hide-main-windowz--non-interactivez--parent-window-idz%sÚflagsN)Úapt_pkgZpkgsystem_unlockÚSystemErrorZwindow_mainZ
get_windowZget_xidÚAttributeErrorÚextendr   ZSPAWN_DO_NOT_REAP_CHILDZspawn_asyncZ
child_dataZchild_watch_addÚ_on_synaptic_exit)r   Úactionr	   r
   ÚwinZxidÚcmdr   ÚpidÚstdinÚstdoutÚstderrr   r   r   r   3   s"    		!z$InstallBackendSynaptic._run_synapticc          
   C   sT   | \ } } | r | j  ƒ  |  j | d d d t j | ƒ d k d d  d d  ƒd  S)NZ
authorizedTZsuccessr   Zerror_stringZ
error_desc)ÚcloseZ_action_doneÚosÚWEXITSTATUS)r   r    Z	conditionÚdatar   r
   r   r   r   r   J   s    
z(InstallBackendSynaptic._on_synaptic_exitN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r      s
   r   )r   r%   r   r   r   Zgi.repositoryr   r   ZUpdateManager.backendr   r   r   r   r   r   Ú<module>   s   