3
s_ù\N  ã               @   sˆ   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 )é    )ÚGtkÚGdké   )ÚReleaseNotesViewer)Úerror)ÚDistUpgradeFetcherCore)ÚSimpleGtkbuilderApp)Úgettext)Úurlopen)Ú	HTTPErrorNc               @   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 j| ||ƒ tj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| jg| j ƒ d S )N)r   ÚexecvZscriptZrun_options)r   r   r   r   ÚrunDistUpgrader/   s    z%DistUpgradeFetcherGtk.runDistUpgraderc             C   s    | j ƒ }|d k	r|S | jƒ S d S )N)Ú_try_show_release_notes_webkitÚ _try_show_release_notes_textview)r   Úresr   r   r   ÚshowReleaseNotes2   s    z&DistUpgradeFetcherGtk.showReleaseNotesc             C   s€   | j jd k	r|yZddlm} || j jƒ}|jƒ  | jjj|ƒ | jjjƒ }| jjj	ƒ  |t
jjkrddS dS  tk
rz   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ƒ}| jrJ| jjdƒ | jjƒ jtjj	tj
jƒƒ xtjƒ r^tjƒ  qLW tjj}tjƒ }yptjdƒ t|ƒ}|jƒ jddƒ}t|ƒ}|jƒ  | jjj|ƒ | jj}|j| jƒ | jjjƒ }| jjjƒ  W nî t k
rX   dt!dƒ }t!dƒ}	tj"| jtj#j$tj%j&tj'j(dƒ}
|
j)dƒ |
j*|ƒ |
j+|	ƒ |
jƒ  |
j,ƒ  Y nx t-k
rÎ   dt!d	ƒ }t!d
ƒ}	tj"| jtj#j$tj%j&tj'j(dƒ}
|
j)dƒ |
j*|ƒ |
j+|	ƒ |
jƒ  |
j,ƒ  Y nX tj|ƒ | jrþ| jjdƒ | jjƒ 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   M   sl    











z6DistUpgradeFetcherGtk._try_show_release_notes_textviewN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r   r   $   s   
r   )Zgi.repositoryr   r   r   Zutilsr   r   ZSimpleGtk3builderAppr   r	   r0   Zurllib.requestr
   Zurllib.errorr   r   r-   r   r   r   r   r   Ú<module>   s   