U
    ٪zc&                     @   sR  zbd dl mZ e dkreddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZmZmZmZ W nX ek
r   ddlmZmZmZ dd	lmZmZmZm
Z
 dd
lmZ ddlmZ Y nX ddlZddlmZ ddlmZ ddlmZ ddlmZ ddl Z ddl!Z!d dl"m"Z" dd Z#dd Z$dd Z%G dd deZ&G dd de!j'j(j)Z*dS )   )get_distZtrusty    )uic)QTranslatorPYQT_VERSIONQLocale)QIcon)QDialogQDialogButtonBoxQMessageBoxQApplication)KIconKMessageBoxKStandardGuiItem)r	   r
   r   r   )r   N)DistUpgradeFetcherCore)gettext)urlopen)	HTTPError)
QUrlOpenerc                  C   s   t  sdtjd< dtjd< dtjd< dtjd< t dg} t| }tttkrd|t	
 d	d
d n|t	
 d	d
d | | | S t  S )NZkdeZQT_PLATFORM_PLUGINZTRUEZKDE_FULL_SESSION5ZKDE_SESSION_VERSIONZQT_QPA_PLATFORMTHEMEzubuntu-release-upgraderZqt_z/usr/share/qt5/translationsz/usr/share/qt4/translations)r   instanceosenvironr   typer   intloadr   systemZinstallTranslator)appZ
translator r   C/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeFetcherKDE.py_ensureQApplicationE   s"    





r!   c                 C   s.   t ttkrtd d|  ntd | d d S )N )r   r   r   r   Zwarningr   sorry)textr   r   r    _warningd   s    r%   c                 C   s"   t ttkrt| S t| S d S N)r   r   r   r   Z	fromThemer   )namer   r   r    _iconk   s    
r(   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
DistUpgradeFetcherKDEc                 C   sB   t | || t | _| jtd || _t   t	
  d S )Nzsystem-software-update)r   __init__r!   r   ZsetWindowIconr(   datadirr   ZsetupUrlHandlesr   processEvents)selfnew_distprogressparentr+   r   r   r    r*   t   s    
zDistUpgradeFetcherKDE.__init__c                 C   s.   t ttkrtd || ntd || d S r&   )r   r   r   r   Zcriticalr   r#   )r-   Zsummarymessager   r   r    error   s    zDistUpgradeFetcherKDE.errorc                 C   sB   t  dkr$t dd| jd g nt | j| jdg| j  d S )Nr   z/usr/bin/pkexecZpkexecz --frontend=DistUpgradeViewKDEz--frontend=DistUpgradeViewKDE)r   getuidexecvZscriptZrun_optionsr-   r   r   r    runDistUpgrader   s    z%DistUpgradeFetcherKDE.runDistUpgraderc           	      C   sj  t  | _t| jd | j | jjtj}|	t
d |td | jjtj}|	t
d |td | jt
d | j  | jjd k	rf| | jj}d }z4t|}| dd}| jj	| | j }W nr tk
r   d	t
d
 }t
d}t|d |  Y n: tk
rT   d	t
d }t
d}t|d |  Y nX |t jkrfdS dS )Nz/dialog_release_notes.uiz&Upgradez	dialog-okz&Cancelzdialog-cancelzRelease NoteszUTF-8replacez+<span weight="bold" size="larger">%s</span>z Could not find the release noteszThe server may be overloaded. z<br />z$Could not download the release notesz&Please check your internet connection.TF)r	   dialogr   loadUir+   	buttonBoxZbuttonr
   OksetTextr   ZsetIconr(   CancelsetWindowTitleshowr.   ZreleaseNotesHtmlUriZ
_expandUrir   readdecodeZscrolled_notesZexec_r   r%   IOErrorZAccepted)	r-   ZupgradeButtonZcancelButtonZuriresultZrelease_notesZnotesZprimaryZ	secondaryr   r   r    showReleaseNotes   sB    
z&DistUpgradeFetcherKDE.showReleaseNotesN)__name__
__module____qualname__r*   r2   r6   rD   r   r   r   r    r)   r   s   r)   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )KDEAcquireProgressAdapterc                 C   sn   t  | _t | _tj|d}t|| j | j	t
d | jj| | jjj| j d| _t  d S )Nzfetch-progress.uiZUpgradeT)r!   r   r	   r8   r   pathjoinr   r9   r>   r   installingLabelr<   r:   ZrejectedZconnectabort	_continuer   r,   )r-   r0   r+   ZlabelZuiFiler   r   r    r*      s    z"KDEAcquireProgressAdapter.__init__c                 C   s
   d| _ d S )NF)rM   r5   r   r   r    rL      s    zKDEAcquireProgressAdapter.abortc                 C   s.   | j jtd | j jd | j   d S )N'Downloading additional package files...r   )r8   rK   r<   r   installationProgresssetValuer?   r5   r   r   r    start   s
    zKDEAcquireProgressAdapter.startc                 C   s   | j   d S r&   )r8   Zhider5   r   r   r    stop   s    zKDEAcquireProgressAdapter.stopc                 C   s   t jjj| | | jj| j| j	 t
| j| j  d  | j	d }|| jkrV| j}td}| jdkr|td| j	| jt| jf 7 }n|td| j	| jf 7 }| jj| t  | jS )Nd   r   rN   r   zFile %s of %s at %sB/szFile %s of %s)aptr/   baseAcquireProgresspulser8   rO   rP   Zcurrent_bytesZcurrent_itemsfloatZtotal_bytesZtotal_itemsr   Zcurrent_cpsapt_pkgZsize_to_strrK   r<   r   r,   rM   )r-   ownerZcurrent_itemZ
label_textr   r   r    rW      s2    



 

 zKDEAcquireProgressAdapter.pulsec                 C   s   t d||f }tttkrFtd t d|tjtj}|tjkr~dS n8t	d t dt dd | t
 t
 }|tjkr~dS dS )Nz&Please insert '%s' into the drive '%s'zMedia ChangeTz<br>F)r   r   r   r   r   Zquestionr;   r=   r   ZquestionYesNor   okZcancelZYes)r-   ZmediumZdrivemsgZchanger   r   r    mediaChange   s$     


z%KDEAcquireProgressAdapter.mediaChangeN)	rE   rF   rG   r*   rL   rQ   rR   rW   r]   r   r   r   r    rH      s   rH   )+Zutilsr   ImportErrorZPyQt5r   ZPyQt5.QtCorer   r   r   ZPyQt5.QtGuir   ZPyQt5.QtWidgetsr	   r
   r   r   ZPyKDE4.kdeuir   r   r   ZPyQt4.QtGuiZPyQt4.QtCoreZPyQt4rY   Z"DistUpgrade.DistUpgradeFetcherCorer   r   r   Zurllib.requestr   Zurllib.errorr   r   rT   r   r!   r%   r(   r)   r/   rU   rV   rH   r   r   r   r    <module>   s2   
F