o
    ÜQ`r  ã                   @   s   d dl Z d dlZe dd¡ e dd¡ e dd¡ d dlmZmZmZ d dlmZ d d	l	m	Z
 d d
lmZ G dd„ dejƒZG dd„ dƒZdS )é    NÚGdkz3.0ÚGtkÚPackageKitGlibz1.0)ÚGObjectr   r   )r   )Úgettext)Úsetup_uic                   @   s   e Zd ZdZdd„ ZdS )ÚProgressDialogz)A small helper window to display progressc                 C   s  t jj| tdƒd |  |¡ |  t jj¡ |  d¡ |  	d¡ |  
d¡ |  dd¡ t ¡ }d|_d	|_d
|_d|_|  d |tjj¡ |  d |tjj¡ t jdt jjd| _|  | j¡ t jdd| _| j d tdƒ¡¡ | j | jddd¡ t   ¡ | _!| j | j!ddd¡ d S )NzCache Refresh)Útitleé   TFi,  éK   éÒ   é<   i   i  é   )ZspacingZorientationr   )Zxalignz<b><big>{}</big></b>zRefreshing software cache)"r   ÚWindowÚ__init__Ú_Úset_transient_forZset_positionZWindowPositionZCENTERZset_border_widthZ	set_modalZset_deletableZset_default_sizer   ZGeometryZ	min_widthZ
min_heightZ	max_widthZ
max_heightZset_geometry_hintsZWindowHintsZMIN_SIZEZMAX_SIZEZBoxZOrientationZVERTICALZboxÚaddZLabelZlabelZ
set_markupÚformatZ
pack_startZProgressBarÚprogressbar)ÚselfÚparentZgeometry© r   úL/usr/lib/python3/dist-packages/softwareproperties/gtk/DialogCacheOutdated.pyr   (   s*   




zProgressDialog.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   %   s    r   c                   @   s0   e Zd Zdd„ Zddd„Zddd„Zdd	„ Zd
S )ÚDialogCacheOutdatedc                 C   s8   || _ t| tj |dd¡dd | j| _| j |¡ dS )zsetup up the gtk dialogZ
gtkbuilderzdialog-cache-outofdate.uizsoftware-properties)ÚdomainN)r   r   ÚosÚpathÚjoinZdialog_cache_outofdateÚdialogr   )r   r   Zdatadirr   r   r   r   F   s   zDialogCacheOutdated.__init__©Nc                 C   s0   |t jjkr| d¡}| jj |d ¡ d S d S )NZ
percentageg      Y@)Ú
packagekitZProgressTypeZ
PERCENTAGEZget_propertyÚ_pdiar   Zset_fraction)r   ZprogressZptypeÚudataÚpercr   r   r   Úon_pktask_progressN   s   
þz&DialogCacheOutdated.on_pktask_progressc                 C   sz   z| j  |¡ W n- ty5 } z!t | jdtjjtjj	t
dƒ¡}| t|ƒ¡ | ¡  W Y d }~nd }~ww | j ¡  d S )Nr   zError while refreshing cache)Ú_pktaskZgeneric_finishÚ	Exceptionr   ZMessageDialogr   ZMessageTypeZERRORZButtonsTypeZCANCELr   Zformat_secondary_textÚstrÚrunÚ_loopÚquit)r   ÚsourceÚresultr'   Úer#   r   r   r   Úon_pktask_finishS   s   ÿ€üz$DialogCacheOutdated.on_pktask_finishc              
   C   sÌ   | j  ¡ }| j  ¡  |tjjkrdt ¡ | _t	| j
ƒ| _t ¡ | _| j ¡  | j
 d¡ z| j dd| jd| jd¡ W n tyS } ztd |¡ƒ W Y d}~nd}~ww | j ¡  | j ¡  | j
 d¡ |S )z:run the dialog, and if reload was pressed run cache updateFNr$   z(Error while requesting cache refresh: {}T)r#   r-   Zhider   ZResponseTypeZAPPLYr%   ZTaskr*   r   r   r&   r   ZMainLoopr.   Zshow_allZset_sensitiveZrefresh_cache_asyncr)   r3   r+   Úprintr   )r   Úresr2   r   r   r   r-   ]   s0   




û€ÿ

zDialogCacheOutdated.runN)r$   )r   r   r   r   r)   r3   r-   r   r   r   r   r   E   s
    


r   )r    ZgiZrequire_versionZgi.repositoryr   r   r   r   r%   r   r   Zsoftwareproperties.gtk.utilsr   r   r   r   r   r   r   r   Ú<module>   s    