o
    >Icy                     @   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   