U
    c                     @   sl   d dl Z d dlZd dlmZ d dlZedd d dlmZ d dlmZ e d dl	m
Z
 G dd	 d	e
ZdS )
    N)gettextZGtkz3.0)GObject)GdkX11)InstallBackendc                   @   s2   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|| 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| d | d | d | dtd  | d | dtd  tjdd	}|| D ]}|d
|  qh|D ]}|d|  q| d | d|j  |  | | j|| d S )Nz-ozSynaptic::closeZvt=truez--progress-str%sz%Please wait, this can take some time.z--finish-strzUpdate is completezw+)modez%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   | j  }z| }W n tk
r.   d}Y nX dddddd| g}|| tj}tj||d\}}	}
}||f| _t	|| j
| j d	S )
zExecute synaptic.r   z/usr/bin/pkexecz/usr/sbin/synapticz--hide-main-windowz--non-interactivez--parent-window-idr   )flagsN)Z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   4   s    

 

z$InstallBackendSynaptic._run_synapticc                 C   s6   |\}}|r|   | j|dt|dkd d d d S )NTr   )Z
authorizedZsuccessZerror_stringZ
error_desc)closeZ_action_doneosWEXITSTATUS)r   r   Z	conditiondatar   r
   r   r   r   r   G   s     z(InstallBackendSynaptic._on_synaptic_exitN)F)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r      s    
r   )r$   r   r   r   ZgiZrequire_versionZgi.repositoryr   r   ZUpdateManager.backendr   r   r   r   r   r   <module>   s   