
Y¯”]œ  ã               @   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 Gd d „  d e ƒ Z d
 S)é    )ÚGtkÚGdké   )ÚReleaseNotesViewer)Úerror)ÚDistUpgradeFetcherCore)ÚSimpleGtkbuilderApp)Úgettext)Úurlopen)Ú	HTTPErrorNc               @   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)ÚDistUpgradeFetcherGtkc             C   sJ   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   sb   t  j ƒ  d k r> t  j d d d d d |  j g |  j ƒ n  t  j |  j |  j g |  j ƒ d  S)Nr   z/usr/bin/gksuZgksuz	--desktopz./usr/share/applications/update-manager.desktopz--)r   ÚgetuidÚexecvZscriptZrun_options)r   r   r   r   ÚrunDistUpgrader/   s    	z%DistUpgradeFetcherGtk.runDistUpgraderc             C   s*   |  j  ƒ  } | d  k	 r | S|  j ƒ  Sd  S)N)Ú_try_show_release_notes_webkitÚ _try_show_release_notes_textview)r   Úresr   r   r   ÚshowReleaseNotes;   s    z&DistUpgradeFetcherGtk.showReleaseNotesc             C   sª   |  j  j d  k	 r¦ y d d l m } | |  j  j ƒ } | j ƒ  |  j j j | ƒ |  j j j ƒ  } |  j j j	 ƒ  | t
 j j k rŒ d Sd SWn t k
 r¥ Yn Xd  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   E   s    
z4DistUpgradeFetcherGtk._try_show_release_notes_webkitc             C   sÃ  |  j  j d  k	 r¿|  j |  j  j ƒ } |  j rh |  j j d ƒ |  j j ƒ  j t j j	 t j
 j ƒ ƒ x t j ƒ  r„ t j ƒ  qk Wt j j } t j ƒ  } yœ t j d ƒ t | ƒ } | j ƒ  j d d ƒ } t | ƒ } | j ƒ  |  j j j | ƒ |  j j } | j |  j ƒ |  j j j ƒ  } |  j j j ƒ  Wn1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, ƒ  Yn™ t- k
 rld t! d	 ƒ } t! d
 ƒ }	 t j" |  j t j# j$ t j% j& t j' j( d ƒ }
 |
 j) d ƒ |
 j* | ƒ |
 j+ |	 ƒ |
 j ƒ  |
 j, ƒ  Yn Xt j | ƒ |  j r©|  j j d ƒ |  j j ƒ  j d  ƒ | t j j. k r¿d Sd 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   V   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	   r1   Zurllib.requestr
   Zurllib.errorr   r   r.   r   r   r   r   r   Ú<module>   s   