
Y]#(                 @   s  y d  d l  m Z e   d k r( e  d d l m Z d d l m Z m Z m Z m	 Z	 m
 Z
 d d l m Z d d l m Z m Z m Z m Z Wnp 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 Yn Xd 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' Gd d   d e  Z( Gd d   d e# j) j* j+  Z, d S)   )get_distZtrusty    )uic)QTranslatorPYQT_VERSIONQLocalepyqtSlotQUrl)QIcon)QDialogQDialogButtonBoxQMessageBoxQApplication)KIconKMessageBoxKStandardGuiItem)r   r   r   r
   )r   N)DistUpgradeFetcherCore)gettext)urlopen)	HTTPError)
QUrlOpenerc              C   s   t  j   s t  d g  }  t |   } t t  t k rX | j t j   d d d  n | j t j   d d d  |  j	 |  |  St  j   S)Nzubuntu-release-upgraderZqt_z/usr/share/qt5/translationsz/usr/share/qt4/translations)
r   instancer   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   _warningX   s    r$   c             C   s-   t  t  t k r t j |   St |   Sd  S)N)r   r   r   r
   Z	fromThemer   )namer   r   r   _icon_   s    r&   c               @   sX   e  Z d  Z d d   Z d d   Z d d   Z d d   Z e e  d	 d
    Z	 d S)DistUpgradeFetcherKDEc             C   sY   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(   h   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   errort   s    zDistUpgradeFetcherKDE.errorc             C   sY   t  j   d k r2 t  j d d |  j d g  n# t  j |  j |  j d g |  j  d  S)Nr   z/usr/bin/kdesudoZkdesudoz --frontend=DistUpgradeViewKDEz--frontend=DistUpgradeViewKDE)osgetuidexecvZscriptZrun_options)r+   r   r   r   runDistUpgraderz   s    	z%DistUpgradeFetcherKDE.runDistUpgraderc       	      C   s  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	 r|  j |  j j  } d  } yJ t |  } | j   j d d  } |  j j j	 |  |  j j   } Wn t k
 r~d	 t
 d
  } t
 d  } t | d |  Yn@ t k
 rd	 t
 d  } t
 d  } t | d |  Yn X| t  j k rd Sd 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.showReleaseNotesc             C   s   | j    } d d  l } t j j d  r9 d | g } no t j j d  rZ d | g } nN t j j d  r{ d | g } n- t j j d  r d	 | g } n d
 | g } t j   d k r d t j k r d d t j d g | } | j |  d  S)Nr   z/usr/bin/kde-openzkde-openz/usr/bin/xdg-openzxdg-openz/usr/bin/exo-openzexo-openz/usr/bin/gnome-openz
gnome-openzx-www-browserZ	SUDO_USERZsudoz-u)ZtoString
subprocessr1   pathexistsr2   environPopen)r+   ZurlrC   Zcommandr   r   r   openUrl   s    !zDistUpgradeFetcherKDE.openUrlN)
__name__
__module____qualname__r(   r0   r4   rB   r   r	   rH   r   r   r   r   r'   f   s
   'r'   c               @   sX   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   s   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   r1   rD   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)rP   )r+   r   r   r   rO      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   rN   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 rs |  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   rQ   rR   Zcurrent_bytesZcurrent_itemsfloatZtotal_bytesZtotal_itemsr   Zcurrent_cpsapt_pkgZsize_to_strrN   r:   r   r*   rP   )r+   ownerZcurrent_itemZ
label_textr   r   r   rY      s     )	
zKDEAcquireProgressAdapter.pulsec             C   s   t  d  | | f } t t  t k re t j d  t  d  | t j t j  } | t j k r d SnN t j	 d  t  d  t  d  d | t
 j   t
 j    } | t j k r d Sd 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)	rI   rJ   rK   r(   rO   rS   rT   rY   r_   r   r   r   r   rL      s   rL   )-Zutilsr   ImportErrorZPyQt5r   ZPyQt5.QtCorer   r   r   r   r	   ZPyQt5.QtGuir
   ZPyQt5.QtWidgetsr   r   r   r   ZPyKDE4.kdeuir   r   r   ZPyQt4.QtGuiZPyQt4.QtCoreZPyQt4r[   Z"DistUpgrade.DistUpgradeFetcherCorer   r   r   Zurllib.requestr   Zurllib.errorr   r1   rV   r   r    r$   r&   r'   r-   rW   rX   rL   r   r   r   r   <module>   s2   (&"\