o
    S(eÞ&  ã                   @   sP  z1d 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 n+ ey\   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w 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_distÚ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  ¡ sCdtjd< dtjd< dtjd< dtjd< t dgƒ} t| ƒ}ttƒtkr2| t	 
¡ d	d
d¡ n
| t	 
¡ d	d
d¡ |  |¡ | S t  ¡ S )NÚkdeÚQT_PLATFORM_PLUGINÚTRUEÚKDE_FULL_SESSIONÚ5ÚKDE_SESSION_VERSIONÚQT_QPA_PLATFORMTHEMEzubuntu-release-upgraderÚqtÚ_z/usr/share/qt5/translationsz/usr/share/qt4/translations)r   ÚinstanceÚosÚenvironr   Útyper   ÚintÚloadr   ÚsystemÚinstallTranslator)ÚappÚ
translator© r)   úC/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeFetcherKDE.pyÚ_ensureQApplicationE   s"   




ÿÿ
r+   c                 C   s0   t tƒtkrt d d| ¡ d S t d | d¡ d S )NÚ )r"   r   r#   r   Úwarningr   Úsorry)Útextr)   r)   r*   Ú_warningd   ó   r0   c                 C   s   t tƒtkrt | ¡S t| ƒS ©N)r"   r   r#   r	   Ú	fromThemer   )Únamer)   r)   r*   Ú_iconk   s   
r5   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'   ÚsetWindowIconr5   Údatadirr   ÚsetupUrlHandlesr   ÚprocessEvents)ÚselfÚnew_distÚprogressÚparentr9   r)   r)   r*   r7   t   s   
zDistUpgradeFetcherKDE.__init__c                 C   s0   t tƒtkrt d ||¡ d S t d ||¡ d S r2   )r"   r   r#   r   Úcriticalr   r.   )r<   ÚsummaryÚmessager)   r)   r*   Úerror€   r1   zDistUpgradeFetcherKDE.errorc                 C   sD   t  ¡ dkrt  dd| jd g¡ d S t  | j| jdg| j ¡ d S )Nr   z/usr/bin/pkexecÚpkexecz --frontend=DistUpgradeViewKDEz--frontend=DistUpgradeViewKDE)r    ÚgetuidÚexecvÚscriptÚrun_options©r<   r)   r)   r*   ÚrunDistUpgrader†   s   ÿÿÿÿz%DistUpgradeFetcherKDE.runDistUpgraderc           	      C   s^  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 ur­|  | jj¡}d }zt|ƒ}| ¡  dd¡}| jj 	|¡ | j ¡ }W n5 ty‹   d	t
d
ƒ }t
dƒ}t|d | ƒ Y n ty¥   d	t
dƒ }t
dƒ}t|d | ƒ Y nw |t jkr­d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   ÚloadUir9   Ú	buttonBoxÚbuttonr   ÚOkÚsetTextr   ÚsetIconr5   ÚCancelÚsetWindowTitleÚshowr=   ÚreleaseNotesHtmlUriÚ
_expandUrir   ÚreadÚdecodeÚscrolled_notesÚexec_r   r0   ÚIOErrorÚAccepted)	r<   ÚupgradeButtonÚcancelButtonÚuriÚresultÚrelease_notesÚnotesÚprimaryÚ	secondaryr)   r)   r*   ÚshowReleaseNotes‘   sD   
ÿÿü
z&DistUpgradeFetcherKDE.showReleaseNotesN)Ú__name__Ú
__module__Ú__qualname__r7   rC   rJ   rf   r)   r)   r)   r*   r6   r   s
    r6   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.uiÚUpgradeT)r+   r'   r
   rL   r    ÚpathÚjoinr   rM   rT   r   ÚinstallingLabelrQ   rN   ÚrejectedÚconnectÚabortÚ	_continuer   r;   )r<   r?   r9   ÚlabelÚuiFiler)   r)   r*   r7   ¹   s   z"KDEAcquireProgressAdapter.__init__c                 C   s
   d| _ d S )NF)rr   rI   r)   r)   r*   rq   Ê   s   
zKDEAcquireProgressAdapter.abortc                 C   s.   | j j tdƒ¡ | j j d¡ | j  ¡  d S )Nú'Downloading additional package files...r   )rL   rn   rQ   r   ÚinstallationProgressÚsetValuerU   rI   r)   r)   r*   ÚstartÍ   s
   ÿzKDEAcquireProgressAdapter.startc                 C   s   | j  ¡  d S r2   )rL   ÚhiderI   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r+| j}tdƒ}| jdkrF|tdƒ| j	| jt | j¡f 7 }n|tdƒ| j	| jf 7 }| jj |¡ t ¡  | jS )Néd   r   ru   r   zFile %s of %s at %sB/szFile %s of %s)Úaptr>   ÚbaseÚAcquireProgressÚpulserL   rv   rw   Úcurrent_bytesÚcurrent_itemsÚfloatÚtotal_bytesÚtotal_itemsr   Úcurrent_cpsÚapt_pkgÚsize_to_strrn   rQ   r   r;   rr   )r<   ÚownerÚcurrent_itemÚ
label_textr)   r)   r*   r   Ö   s.   
ÿÿÿ




þÿzKDEAcquireProgressAdapter.pulsec                 C   s„   t dƒ||f }ttƒtkr$t d t dƒ|tjtj¡}|tjkr"dS dS t 	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   ÚquestionrP   rS   r   ÚquestionYesNor   ÚokÚcancelÚYes)r<   ÚmediumÚdriveÚmsgÚchanger)   r)   r*   ÚmediaChangeê   s$   ÿ
ú
ÿý
z%KDEAcquireProgressAdapter.mediaChangeN)	rg   rh   ri   r7   rq   rx   rz   r   r”   r)   r)   r)   r*   rj   ¸   s    rj   )+Úutilsr   ÚImportErrorÚPyQt5r   ÚPyQt5.QtCorer   r   r   ÚPyQt5.QtGuir	   ÚPyQt5.QtWidgetsr
   r   r   r   ÚPyKDE4.kdeuir   r   r   ÚPyQt4.QtGuiÚPyQt4.QtCoreÚPyQt4r†   Ú"DistUpgrade.DistUpgradeFetcherCorer   r   r   Úurllib.requestr   Úurllib.errorr   r    r|   r   r+   r0   r5   r6   r>   r}   r~   rj   r)   r)   r)   r*   Ú<module>   s6   
üF