3
[                 @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlm	Z	 ddl
mZ G dd	 d	eZejjd
rdejkryddlmZ W n& ek
r   ddlZejd Y nX ejjdrdejkryddlmZ W n& ek
r   ddlZejd Y nX dd ZdS )z2Integration of package managers into UpdateManager    )absolute_import)GLib)CacheN)inhibit_sleep)Dialogc               @   s>   e Zd ZdZdZdd Zdd Zdd Zd	d
 ZdddZ	dS )InstallBackendr      c             C   s   t j| | || _d | _d S )N)r   __init__actionsleep_cookie)selfwindow_mainr
    r   @/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.pyr	      s    zInstallBackend.__init__c             C   s   dt jd< t | _| j| jkrg }g }g }t| jjj	d}x| jjD ]}yv|j
r~||j j r~|j}|jrr|d7 }|j| n>|jr||j jr|j|j n|jr||j jr|j|j W qD tk
r   Y qDX qDW | j||| n| j  d S )NZnoneZAPT_LISTCHANGES_FRONTEND)rootdirz#auto)osenvironr   r   r
   ACTION_INSTALLr   r   cacher   Zmarked_installnameZis_installedZis_auto_installedappendZmarked_upgradeZis_upgradableZmarked_deleteKeyErrorcommitupdate)r   pkgs_installpkgs_upgradepkgs_removeZfresh_cachepkgZpkgnamer   r   r   start   s2    

zInstallBackend.startc             C   s   t dS )z(Run a update to refresh the package listN)NotImplemented)r   r   r   r   r   >   s    zInstallBackend.updatec             C   s   t dS )zCommit the cache changes N)r   )r   r   r   r   r   r   r   r   B   s    zInstallBackend.commitFc             C   sn   || j krB|r| jj  qj|r0| jj||| qjtjd| jj n(|rX| jjd|| n| }| jj| d S )Nr   T)r   r   Zstart_availableZstart_errorr   Ztimeout_addexit)r   r
   Z
authorizedZsuccessZerror_stringZ
error_descZtrans_failedZis_cancelled_updater   r   r   _action_doneF   s    


zInstallBackend._action_doneN)F)
__name__
__module____qualname__ZACTION_UPDATEr   r	   r   r   r   r!   r   r   r   r   r      s   #r   z/usr/sbin/aptd%UPDATE_MANAGER_FORCE_BACKEND_SYNAPTICr   )InstallBackendAptdaemonzimporting aptdaemonz/usr/sbin/synaptic&UPDATE_MANAGER_FORCE_BACKEND_APTDAEMON)InstallBackendSynapticzimporting synapticc              O   s   t jjdrHdt jkrHy
t| |S  tk
rF   ddl}|jd Y nX t jjdr~dt jkr~y
t| |S  tk
r|   Y nX t	ddS )	z,Select and return a package manager backend.z/usr/sbin/aptdr%   r   Nzusing aptdaemon failedz/usr/sbin/synapticr'   zENo working backend found, please try installing aptdaemon or synaptic)
r   pathexistsr   r&   	NameErrorlogging	exceptionr(   	Exception)argskwargsr,   r   r   r   get_backendu   s    



r1   )__doc__Z
__future__r   Zgi.repositoryr   Zaptr   r   ZUpdateManager.Core.utilsr   ZUpdateManager.Dialogsr   r   r)   r*   r   r&   ImportErrorr,   r-   r(   r1   r   r   r   r   <module>   s,   Q

