U
    wE‡^y  ã                   @   sœ   d dl Z e  dd¡ d dlmZmZ ddlmZ ddlmZ ddlm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G dd„ deƒZdS )é    NÚGtkz3.0)r   ÚGdké   )ÚReleaseNotesViewer)Úerror)ÚDistUpgradeFetcherCore)ÚSimpleGtkbuilderApp)Úgettext)Úurlopen)Ú	HTTPErrorc                   @   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 )ÚDistUpgradeFetcherGtkc                 C   s4   t  | ||¡ tj |dd¡}t|dƒ| _|| _d S )NZ
gtkbuilderzReleaseNotes.uizubuntu-release-upgrader)r   Ú__init__ÚosÚpathÚjoinr   ÚwidgetsÚwindow_main)ÚselfÚnew_distZprogressÚparentZdatadirZuifile© r   ú@/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeFetcher.pyr   (   s    zDistUpgradeFetcherGtk.__init__c                 C   s   t | j||ƒS ©N)r   r   )r   ZsummaryÚmessager   r   r   r   .   s    zDistUpgradeFetcherGtk.errorc                 C   s   t  | j| jg| j ¡ d S r   )r   ÚexecvZscriptZrun_options)r   r   r   r   ÚrunDistUpgrader1   s    z%DistUpgradeFetcherGtk.runDistUpgraderc                 C   s    |   ¡ }|d k	r|S |  ¡ S d S r   )Ú_try_show_release_notes_webkitÚ _try_show_release_notes_textview)r   Úresr   r   r   ÚshowReleaseNotes4   s    z&DistUpgradeFetcherGtk.showReleaseNotesc                 C   s„   | j jd k	r€z^ddlm} || j jƒ}| ¡  | jj |¡ | jj ¡ }| jj 	¡  |t
jjkrfW dS W dS  tk
r~   Y nX d S )Nr   )ÚReleaseNotesViewerWebkitTF)r   ZreleaseNotesHtmlUrir    Úshowr   Úscrolled_notesÚaddÚdialog_release_notesÚrunÚhider   ÚResponseTypeÚOKÚImportError)r   r    Zwebkit_release_notesr   r   r   r   r   >   s     ÿz4DistUpgradeFetcherGtk._try_show_release_notes_webkitc              
   C   s  | j jd k	r|  | j j¡}| jrJ| j d¡ | j ¡  tj 	tj
j¡¡ t ¡ r\t ¡  qJtjj}t ¡ }zpt d¡ t|ƒ}| ¡  dd¡}t|ƒ}| ¡  | jj |¡ | jj}| | j¡ | jj ¡ }| jj ¡  W nî t k
rT   dt!dƒ }t!dƒ}	t "| jtj#j$tj%j&tj'j(d¡}
|
 )d¡ |
 *|¡ |
 +|	¡ |
 ¡  |
 ,¡  Y nx t-k
rÊ   dt!d	ƒ }t!d
ƒ}	t "| jtj#j$tj%j&tj'j(d¡}
|
 )d¡ |
 *|¡ |
 +|	¡ |
 ¡  |
 ,¡  Y nX t |¡ | jrú| j d¡ | j ¡  d ¡ |tjj.krdS dS )NFé   zUTF-8Úreplacez+<span weight="bold" size="larger">%s</span>z Could not find the release noteszThe server may be overloaded. Ú z$Could not download the release notesz&Please check your internet connection.T)/r   ZreleaseNotesURIZ
_expandUrir   Zset_sensitiveZ
get_windowZ
set_cursorr   ZCursorÚnewZ
CursorTypeZWATCHr   Zevents_pendingZmain_iterationr'   ZCANCELÚsocketZgetdefaulttimeoutZsetdefaulttimeoutr
   ÚreadÚdecoder   r!   r   r"   r#   r$   Zset_transient_forr%   r&   r   Ú_ZMessageDialogZDialogFlagsZMODALZMessageTypeZERRORZButtonsTypeZCLOSEZ	set_titleZ
set_markupZformat_secondary_textZdestroyÚIOErrorr(   )r   Zurir   ZtimeoutZrelease_notesZnotesZtextview_release_notesZrelease_widgetZprimaryZ	secondaryZdialogr   r   r   r   O   sz    
ÿ

ÿ ý


ÿ ý



z6DistUpgradeFetcherGtk._try_show_release_notes_textviewN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r   r   &   s   
r   )ZgiZrequire_versionZgi.repositoryr   r   r   Zutilsr   r   ZSimpleGtk3builderAppr   r	   r1   Zurllib.requestr
   Zurllib.errorr   r   r.   r   r   r   r   r   Ú<module>   s   