o
    {f                     @   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)gettextGtkz3.0)GObject)GdkX11)InstallBackendc                   @   s4   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_synaptic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
|  q4|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_tempfileNamedTemporaryFilewritenameflushr   ACTION_INSTALL)r
   pkgs_installpkgs_upgradepkgs_removeclose_on_doner   r   pkg_namer   r   r   commit   s"   




zInstallBackendSynaptic.commitc                 C   s   | j  }z| }W n ty   d}Y nw 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)window_main
get_windowget_xidAttributeErrorextendr   SPAWN_DO_NOT_REAP_CHILDspawn_async
child_datachild_watch_add_on_synaptic_exit)r
   actionr   r   win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   )
authorizedsuccesserror_string
error_desc)close_action_doneosWEXITSTATUS)r
   r/   	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   )r9   r   r   r   girequire_versiongi.repositoryr   r   UpdateManager.backendr   r   r   r   r   r   <module>   s   