3
s_\&                 @   sR  ybd 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 j 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|jt	j
 d	d
d n|jt	j
 d	d
d | j| | S t j 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jd d|  ntj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j| 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 j| || t | _| jjtd || _t j  t	j
  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jd || ntjd || d S )N)r   r   r   r   Zcriticalr   r#   )r,   Zsummarymessager   r   r    error   s    zDistUpgradeFetcherKDE.errorc             C   sB   t j dkr$t jdd| jd g nt j| 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| jd | j | jjjtj}|j	t
d |jtd | jjjtj}|j	t
d |jtd | jjt
d | jj  | jjd k	rf| j| jj}d }y4t|}|j jdd}| jj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   s>    


z&DistUpgradeFetcherKDE.showReleaseNotesN)__name__
__module____qualname__r)   r1   r4   rB   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j|d}tj|| j | jj	t
d | jjj| | jjjj| j d| _tj  d S )Nzfetch-progress.uiZUpgradeT)r!   r   r	   r6   r   pathjoinr   r7   r<   r   installingLabelr:   r8   ZrejectedZconnectabort	_continuer   r+   )r,   r/   r*   ZlabelZuiFiler   r   r    r)      s    z"KDEAcquireProgressAdapter.__init__c             C   s
   d| _ d S )NF)rK   )r,   r   r   r    rJ      s    zKDEAcquireProgressAdapter.abortc             C   s.   | j jjtd | j jjd | j j  d S )Nz'Downloading additional package files...r   )r6   rI   r:   r   installationProgresssetValuer=   )r,   r   r   r    start   s    
zKDEAcquireProgressAdapter.startc             C   s   | j j  d S )N)r6   Zhide)r,   r   r   r    stop   s    zKDEAcquireProgressAdapter.stopc             C   s   t jj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| jf 7 }n|td| j	| jf 7 }| jjj| tj  | jS )Nd   r   z'Downloading additional package files...r   zFile %s of %s at %sB/szFile %s of %s)aptr.   baseAcquireProgresspulser6   rL   rM   Zcurrent_bytesZcurrent_itemsfloatZtotal_bytesZtotal_itemsr   Zcurrent_cpsapt_pkgZsize_to_strrI   r:   r   r+   rK   )r,   ownerZcurrent_itemZ
label_textr   r   r    rT      s     "


zKDEAcquireProgressAdapter.pulsec             C   s   t d||f }tttkrFtjd t d|tjtj}|tjkr~dS n8tj	d t dt dd | t
j t
j }|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questionr9   r;   r   ZquestionYesNor   okZcancelZYes)r,   ZmediumZdrivemsgZchanger   r   r    mediaChange   s    




z%KDEAcquireProgressAdapter.mediaChangeN)	rC   rD   rE   r)   rJ   rN   rO   rT   rZ   r   r   r   r    rF      s   rF   )+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PyQt4rV   Z"DistUpgrade.DistUpgradeFetcherCorer   r   r   Zurllib.requestr   Zurllib.errorr   r   rQ   r   r!   r%   r'   r(   r.   rR   rS   rF   r   r   r   r    <module>   s2   
F