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   