o
    >I¼cy  ã                   @   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 )NÚ
gtkbuilderzReleaseNotes.uizubuntu-release-upgrader)r   Ú__init__ÚosÚpathÚjoinr   ÚwidgetsÚwindow_main)ÚselfÚnew_distÚprogressÚparentÚdatadirÚuifile© r   ú@/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeFetcher.pyr   (   s   
zDistUpgradeFetcherGtk.__init__c                 C   s   t | j||ƒS ©N)r   r   )r   ÚsummaryÚmessager   r   r   r   .   s   zDistUpgradeFetcherGtk.errorc                 C   s   t  | j| jg| j ¡ d S r   )r   ÚexecvÚscriptÚrun_options)r   r   r   r   ÚrunDistUpgrader1   s   z%DistUpgradeFetcherGtk.runDistUpgraderc                 C   s   |   ¡ }|d ur
|S |  ¡ 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 ur@z/ddlm} || j jƒ}| ¡  | jj |¡ | jj ¡ }| jj 	¡  |t
jjkr3W dS W dS  ty?   Y d S w d S )Nr   )ÚReleaseNotesViewerWebkitTF)r   ÚreleaseNotesHtmlUrir'   Úshowr   Úscrolled_notesÚaddÚdialog_release_notesÚrunÚhider   ÚResponseTypeÚOKÚImportError)r   r'   Úwebkit_release_notesr%   r   r   r   r#   >   s$   ÿþz4DistUpgradeFetcherGtk._try_show_release_notes_webkitc              
   C   s  | j jd u�r|  | j j¡}| jr%| j d¡ | j ¡  tj 	tj
j¡¡ t ¡ r1t ¡  t ¡ s)tjj}t ¡ }z8t d¡ t|ƒ}| ¡  dd¡}t|ƒ}| ¡  | jj |¡ | jj}| | j¡ | jj ¡ }| jj ¡  W ns t y«   dt!dƒ }t!dƒ}	t "| jtj#j$tj%j&tj'j(d¡}
|
 )d¡ |
 *|¡ |
 +|	¡ |
 ¡  |
 ,¡  Y n: t-yä   dt!d	ƒ }t!d
ƒ}	t "| jtj#j$tj%j&tj'j(d¡}
|
 )d¡ |
 *|¡ |
 +|	¡ |
 ¡  |
 ,¡  Y nw 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   ÚreleaseNotesURIÚ
_expandUrir   Úset_sensitiveÚ
get_windowÚ
set_cursorr   ÚCursorÚnewÚ
CursorTypeÚWATCHr   Úevents_pendingÚmain_iterationr/   ÚCANCELÚsocketÚgetdefaulttimeoutÚsetdefaulttimeoutr
   ÚreadÚdecoder   r)   r   r*   r+   r,   Úset_transient_forr-   r.   r   Ú_ÚMessageDialogÚDialogFlagsÚMODALÚMessageTypeÚERRORÚButtonsTypeÚCLOSEÚ	set_titleÚ
set_markupÚformat_secondary_textÚdestroyÚIOErrorr0   )r   Úurir%   ÚtimeoutÚrelease_notesÚnotesÚtextview_release_notesÚrelease_widgetÚprimaryÚ	secondaryÚ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   )ÚgiÚrequire_versionÚgi.repositoryr   r   r   Úutilsr   r   ÚSimpleGtk3builderAppr   r	   rH   Úurllib.requestr
   Úurllib.errorr   r   rB   r   r   r   r   r   Ú<module>   s   