o
    S(en‡  ã                   @   s’  d dl Z dZze  dd¡ d dlmZ dZW n ey1   e  dd¡ d dlmZ ejjej_Y nw 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d dlZd dlZd dlZd dlZd dlZd dlZddlmZmZ ddlmZmZmZmZ ddlmZ ddl m!Z! d dl"Z"ddl#m"Z$ G dd„ dej%j&j'ƒZ(G dd„ dej%j&j)ƒZ*G dd„ deƒZ+G dd„ deƒZ,G dd„ de-ƒZ.G dd„ de-ƒZ/G dd „ d ee!ƒZ0e1d!krGe0ƒ Z2e+e2ƒZ3e,e2ƒZ4e2 5¡  6g d"¢¡ e	 7¡  e 8d ¡ e 9¡ Z:ej;dd… D ]Z<e:e< j=re:e<  >¡  qe:e<  ?¡  qe: @e3e4¡ e	 7¡  e4 Ad#d$¡ e2 5¡  6g d"¢¡ e2 Bd%d&d'¡ e2 Cd(g d)¡ dS dS )*é    NFÚVtez2.91)r   Tz2.90)ÚGtk)ÚGdk)ÚGLib)ÚGObject)ÚPangoé   )Ú
run_apportÚapport_crash)ÚDistUpgradeViewÚFuzzyTimeToStrÚInstallProgressÚAcquireProgress)Úget)ÚSimpleGtkbuilderApp)Úgettextc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚGtkCdromProgressAdapterzi Report the cdrom add progress
        Subclass this class to implement cdrom add progress reporting
    c                 C   s   |j | _|j| _|| _d S ©N)Úlabel_statusÚstatusÚprogressbar_cacheÚprogressÚparent©Úselfr   © r   úA/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeViewGtk3.pyÚ__init__B   s   
z GtkCdromProgressAdapter.__init__c                 C   sH   |r| j  |¡ | j |jt| jƒ ¡ t ¡ r"t 	¡  t ¡ sdS dS )z; update is called regularly so that the gui can be redrawn N)
r   Úset_textr   Úset_fractionÚvalueÚfloatÚ
totalStepsr   Úevents_pendingÚmain_iteration)r   ÚtextÚstepr   r   r   ÚupdateF   s   ÿzGtkCdromProgressAdapter.updatec                 C   ó   dS )N)FÚ r   ©r   r   r   r   Úask_cdrom_nameM   ó   z&GtkCdromProgressAdapter.ask_cdrom_namec                 C   r(   )NFr   r*   r   r   r   Úchange_cdromO   r,   z$GtkCdromProgressAdapter.change_cdromN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r'   r+   r-   r   r   r   r   r   >   s    r   c                       s.   e Zd Zdd„ Zd‡ fdd„	Zdd„ Z‡  ZS )	ÚGtkOpProgressc                 C   s   || _ d| _d S )Nç        )ÚprogressbarÚfraction)r   r4   r   r   r   r   T   s   
zGtkOpProgress.__init__Nc                    s`   t t| ƒ |¡ | jd }t| j| ƒdkr || _| j | j¡ t 	¡ r.t 
¡  t 	¡ s$d S d S )Nç      Y@çš™™™™™¹?)Úsuperr2   r'   ÚpercentÚabsr5   r4   r   r   r#   r$   )r   r9   Únew_fraction©Ú	__class__r   r   r'   Z   s   
ÿzGtkOpProgress.updatec                 C   ó   | j  d¡ d S )Nú )r4   r   r*   r   r   r   Údoneg   ó   zGtkOpProgress.doner   )r.   r/   r0   r   r'   r@   Ú__classcell__r   r   r<   r   r2   S   s    r2   c                       sL   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡ fdd„Zd	d
„ Z‡ fdd„Z‡  Z	S )ÚGtkAcquireProgressAdapterc                    sF   t t| ƒ ¡  |j| _|j| _|| _d| _|j	| _
| j
 d| j¡ d S )NFÚclicked)r8   rC   r   r   r   r   r   r   ÚcanceledÚbutton_fetch_cancelÚbutton_cancelÚconnectÚcancelClickedr   r<   r   r   r   o   s   z"GtkAcquireProgressAdapter.__init__c                 C   s   t  d¡ d| _d S )NrI   T)ÚloggingÚdebugrE   )r   Úwidgetr   r   r   rI   x   s   

z'GtkAcquireProgressAdapter.cancelClickedc                 C   sj   t dƒ||f }tj| jjtjjtjjtj	j
d}| |¡ | ¡ }| d¡ | ¡  |tjjkr3dS dS )Nz&Please insert '%s' into the drive '%s'©r   ÚflagsÚtypeÚbuttonsr)   TF)Ú_r   ÚMessageDialogr   Úwindow_mainÚDialogFlagsÚMODALÚMessageTypeÚQUESTIONÚButtonsTypeÚ	OK_CANCELÚ
set_markupÚrunÚ	set_titleÚdestroyÚResponseTypeÚOK)r   ÚmediumÚdriveÚmsgÚdialogÚresr   r   r   Úmedia_change{   s   
ý

z&GtkAcquireProgressAdapter.media_changec                    s2   t t| ƒ ¡  | j d¡ | j ¡  | j ¡  d S )Nr   )r8   rC   Ústartr   r   r   ÚshowrG   r*   r<   r   r   rf   ‰   s   
zGtkAcquireProgressAdapter.startc                 C   s*   | j  d¡ | j tdƒ¡ | j ¡  d S )Nr?   zFetching is complete)r   r   r   rQ   rG   Úhider*   r   r   r   Ústop   s   zGtkAcquireProgressAdapter.stopc                    s  t t| ƒ |¡ t| j| j ¡ d  ƒdkrr| j | jd ¡ | jd }|| j	kr,| j	}| j
dkr_t | j
¡}t|tƒrC| t ¡ ¡}| j tdƒ|| j	|f ¡ | j tdƒt| jƒ ¡ n| j tdƒ|| j	f ¡ | j d¡ t ¡ r~t ¡  t ¡ sv| j S )	Nr6   r7   r   r   z!Fetching file %li of %li at %sB/súAbout %s remainingzFetching file %li of %liz  )r8   rC   Úpulser:   r9   r   Úget_fractionr   Úcurrent_itemsÚtotal_itemsÚcurrent_cpsÚapt_pkgÚsize_to_strÚ
isinstanceÚbytesÚdecodeÚlocaleÚgetpreferredencodingr   r   rQ   r   Úetar   r#   r$   rE   )r   ÚownerÚcurrentItemro   r<   r   r   rk   ”   s4   



ÿÿ
ÿÿÿzGtkAcquireProgressAdapter.pulse)
r.   r/   r0   r   rI   re   rf   ri   rk   rB   r   r   r<   r   rC   k   s    	rC   c                   @   sj   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
ddd„Zdd„ Zdd„ Zdd„ ZdS )ÚGtkInstallProgressAdapteri,  c                 C   sX   t  | ¡ d | _|j| _|j| _|j| _|j| _	| j	 
d| j¡ || _tj dd¡ d S )Núchild-exitedzDPkg::StopOnErrorÚFalse)r   r   Ú_cacher   r   r   Úexpander_terminalÚexpanderÚ_termÚtermrH   Úchild_exitedr   rp   ÚconfigÚsetr   r   r   r   r   ³   s   
z"GtkInstallProgressAdapter.__init__c                 C   sâ   t  | ¡ d| _| j tdƒ¡ | j d¡ | j d¡ | j 	d¡ | j
 ¡  | j
 d| j¡ tj d¡p6d}|dkrQ| jrQd	| jvsI| jd	 jsQd
}| j d¡ d| j dg| _dtjvrf| j d| ¡ d| _d| _d| _d S )NFzApplying changesr3   r?   Tzcontents-changedÚDEBIAN_FRONTENDÚgnomezlibgtk3-perlrc   zVTE_PTY_KEEP_FD=%szAPT_LISTCHANGES_FRONTEND=nonezDEBIAN_FRONTEND=%s)r   Ústart_updateÚfinishedr   r   rQ   r   r   r   Úset_sensitiver   rg   rH   Ú_on_term_content_changedÚosÚenvironr   r}   Úis_installedÚset_expandedÚwritefdÚenvÚappendÚ
start_timeÚtime_uiÚlast_activity)r   Úfrontendr   r   r   r‡   À   s.   



ÿÿ

z&GtkInstallProgressAdapter.start_updatec                 C   sâ   t  | ||¡ t d||f ¡ t dd¡|v rdS | jj | jj¡ t	dƒ| }t	dƒ| }d||f }| jj 
¡  | jj d¡ | jj ¡  tjj¡ | jj |¡ | jj ¡  |¡ | jj ¡  | jj ¡  | jj ¡  d S )	Nz*got an error from dpkg for pkg: '%s': '%s'Údpkgz*dependency problems - leaving unconfiguredFzCould not install '%s'zThe upgrade will continue but the '%s' package may not be in a working state. Please consider submitting a bug report about it.ú<big><b>%s</b></big>

%sr)   )r   ÚerrorrJ   r   Údgettextr   Údialog_errorÚset_transient_forrS   rQ   Úrealizer\   Ú
get_windowÚset_functionsr   Ú
WMFunctionÚMOVEÚlabel_errorrZ   Útextview_errorÚ
get_bufferr   Úscroll_errorrg   r[   rh   )r   ÚpkgÚerrormsgÚsummaryrb   Úmarkupr   r   r   r˜   Ü   s$   þzGtkInstallProgressAdapter.errorc                 C   sV  t  d| ¡ t ¡ }tdƒ| }tdƒ}d||f }| jj |¡ | jj d¡ | jj 	| jj
¡ tj |¡s<|d }tj d¡rddd||g}tj|tjd	 ¡ d
 }| dd¡}| jj ¡  |¡ n| jj ¡  tdƒ¡ | jj ¡ }	| jj ¡  |  jt ¡ | 7  _|	tjjkrd}
nd}
z| j |
 d¡¡ W d S    | j |
d¡ Y d S )Nz.got a conffile-prompt from dpkg for file: '%s'z/Replace the customized configuration file
'%s'?ztYou will lose any changes you have made to this configuration file if you choose to replace it with a newer version.z1<span weight="bold" size="larger">%s </span> 

%sr)   z
.dpkg-distz/usr/bin/diffz-u)Ústdoutr   zUTF-8Úreplacez The 'diff' command was not foundzy
zn
zutf-8éÿÿÿÿ)rJ   rK   ÚtimerQ   r   Úlabel_conffilerZ   Údialog_conffiler\   r›   rS   r‹   ÚpathÚexistsÚ
subprocessÚPopenÚPIPEÚcommunicatert   Útextview_conffiler£   r   r[   rh   r“   r   r^   ÚYESr   Ú
feed_childÚencode)r   ÚcurrentÚnewrf   ÚprimÚsecr¨   ÚcmdÚdiffrd   Úresponser   r   r   Úconffileó   s<   ÿÿz"GtkInstallProgressAdapter.conffilec                 C   sv   t j t jj¡}t ¡ }|dkr-| jD ]}| d¡\}}|tj	|< q| 
¡  dtj	d< |S | j |¡ | j |¡ |S )Nr   ú=Ú1ÚDPKG_UNTRANSLATED_MESSAGES)r   ÚPtyÚnew_syncÚPtyFlagsÚDEFAULTr‹   Úforkr   ÚsplitrŒ   Úchild_setupr   Úset_ptyÚwatch_child)r   ÚptyÚpidr   Úkeyr    r   r   r   rÈ     s   

þzGtkInstallProgressAdapter.forkc                 C   s   t   ¡ | _d| _dS )zŠ helper function that is called when the terminal changed
            to ensure that we have a accurate idea when something hangs
        FN)r¬   r”   Úactivity_timeout_reported)r   r   r   r   r   rŠ   ,  s   

z2GtkInstallProgressAdapter._on_term_content_changedc                 C   sú   | j dkr
t ¡ | _ t|| j ¡ d  ƒdkr)| j t|ƒd ¡ | j | 	¡ ¡ |dkrw| j
| j  }|| j8 }t|ƒ| }d| | }|dkrY|dk rY| j tdƒt|ƒ ¡ n| j d¡ | jjry| jj d	¡d
kr{| jj d| ¡ d S d S d S d S )Nr3   r6   r7   ç      ð?g     €N@i £ rj   r?   zload-statusé   zprogress("%s"))r’   r¬   r:   r   rl   r   r!   r   r   Ústripr”   r“   rQ   r   r   Ú_webkit_viewÚget_propertyÚexecute_script)r   r¥   r9   r   ÚdeltaÚtime_per_percentrw   r   r   r   Ústatus_change3  s&   


òz'GtkInstallProgressAdapter.status_changeNc                 C   s$   |d u r
|  ¡ | _n|| _d| _d S ©NT)Úget_child_exit_statusÚ
apt_statusrˆ   )r   r   r   r   r   r   r‚   M  s   
z&GtkInstallProgressAdapter.child_exitedc                 C   s   | j s
|  ¡  | j r| jS r   )rˆ   Úupdate_interfacerÜ   r*   r   r   r   Ú
wait_childV  s   ÿz$GtkInstallProgressAdapter.wait_childc                 C   r>   )Nr)   ©r   r   r*   r   r   r   Úfinish_update[  rA   z'GtkInstallProgressAdapter.finish_updatec                 C   s    t  | ¡ | jdkr| j ¡  t d¡ | jdkr=| j| j t ¡ k r=| j	s6t
 d| j| j ¡ f ¡ d| _	| jj d¡ t ¡ rIt ¡  t ¡ sAt d¡ d S )Nr3   gš™™™™™É?r   z+no activity on terminal for %s seconds (%s)Tg{®Gáz„?)r   rÝ   r’   r   rk   r¬   Úsleepr”   ÚTIMEOUT_TERMINAL_ACTIVITYrÐ   rJ   Úwarningr   Úget_textr   r~   rŽ   r   r#   r$   r*   r   r   r   rÝ   ^  s   




ÿz*GtkInstallProgressAdapter.update_interfacer   )r.   r/   r0   râ   r   r‡   r˜   rÀ   rÈ   rŠ   rÙ   r‚   rÞ   rà   rÝ   r   r   r   r   rz   ®   s    '
	rz   c                   @   s   e Zd Zdd„ Zddd„ZdS )ÚDistUpgradeVteTerminalc                 C   s   || _ || _d S r   )r   r   )r   r   r   r   r   r   r   r  s   
zDistUpgradeVteTerminal.__init__Fc              
      sî   t r	‡ fdd„}n‡ fdd„}ˆ j ¡  ˆ j d|¡ ˆ jj d¡ |dkr-ˆ jj d¡ dˆ _t rDˆ j 	t
jjd|d dd d d ¡\}}nˆ j t
jjd|d dd d ¡\}}|rZ|dk r\d S ˆ jsst ¡ rkt ¡  t ¡ sct d	¡ ˆ jr_ˆ `d S )
Nc                    ó
   dˆ _ d S rÚ   ©rˆ   )Úterminalr   r*   r   r   Úwait_for_childw  ó   
z3DistUpgradeVteTerminal.call.<locals>.wait_for_childc                    ræ   rÚ   rç   )rL   r*   r   r   ré   {  rê   r{   TFú/r   r7   )Úvte291r   rg   rH   r   r~   r‰   rŽ   rˆ   Ú
spawn_syncr   rÆ   rÇ   Úfork_command_fullr   r#   r$   r¬   rá   )r   r½   Úhiddenré   ÚsuccessrÎ   r   r*   r   Úcallu  sL   

øù	ÿ
ýzDistUpgradeVteTerminal.callN©F)r.   r/   r0   r   rñ   r   r   r   r   rå   q  s    rå   c                   @   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 )ÚHtmlViewc                 C   s
   || _ d S r   )rÔ   )r   Úwebkit_viewr   r   r   r   ¤  s   
zHtmlView.__init__c                 C   sr   | j sd S zddlm} |sJ ‚| j  |¡ | j  d| j¡ W d S  ty8   | j  |¡ | j  d| j¡ Y d S w )Nr   ©ÚWebKit2zload-changedzload-finished)	rÔ   Úgi.repositoryrö   Úload_urirH   Ú_on_load_changedÚImportErrorÚopenÚ_on_load_finished)r   Úurlrö   r   r   r   rû   ¦  s   þzHtmlView.openc                 C   ó   | j  ¡  d S r   )rÔ   rg   r*   r   r   r   rg   ±  ó   zHtmlView.showc                 C   rþ   r   )rÔ   rh   r*   r   r   r   rh   ³  rÿ   zHtmlView.hidec                 C   s   |  ¡  d S r   )rg   )r   ÚviewÚframer   r   r   rü   µ  ó   zHtmlView._on_load_finishedc                 C   s(   ddl m} ||jjkr| ¡  d S d S )Nr   rõ   )r÷   rö   Ú	LoadEventÚLOAD_FINISHEDrg   )r   r   ÚeventÚdatarö   r   r   r   rù   ·  s   ÿzHtmlView._on_load_changedN)	r.   r/   r0   r   rû   rg   rh   rü   rù   r   r   r   r   ró   £  s    ró   c                       sè   e Zd ZdZd7dd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡ fdd „Zd8d!d"„Zd8d#d$„Z	%d9d&d'„Zd:d)d*„Zd;d,d-„Zd.d/„ Zd0d1„ Zd<d3d4„Zd5d6„ Z‡  ZS )=ÚDistUpgradeViewGtk3z& gtk frontend of the distUpgrade tool Nc              
      s>  t  ˆ ¡ |ˆ _|r|dkrtj t ¡ d¡}t ¡ }n	d}tj |d¡}t t	j
¡ tƒ  d¡ zt d|¡ t d¡ W n tyW } zt d| ¡ W Y d }~nd }~ww t ˆ |d d¡ tj ¡ }zˆ j | d	d
d¡¡ W n tjy } zt d| ¡ W Y d }~nd }~ww ˆ j ¡ }| dd¡}ˆ j  |¡ ˆ  !¡  d ˆ _"tj ¡ ˆ _#d ˆ _$ˆ j %¡  ˆ j &¡  't(j)j*¡ t+ˆ j,ƒˆ _-t.ˆ ƒˆ _/t0ˆ ƒˆ _1t2ˆ ƒˆ _3t 4tj5¡ˆ _6t 7d¡}t 8¡ }	| 9|	d¡ | :|	dd¡ ˆ j; <|¡ ˆ j6 =dtj>j?¡ ˆ j; @ˆ j6¡ ˆ jA Bd¡ ‡ fdd„}
ˆ jC Dd|
¡ ˆ jEt	_Fd S )NÚ.Úmoz/usr/share/locale/Ú
gtkbuilderÚGTKzubuntu-release-upgraderzError setting locales (%s)z/DistUpgrade.uizsystem-software-updateé    r   z)error setting default icon, ignoring (%s)ú%sz22.04r)   Tr¨   Fc                    s   ˆ j  ¡ }ˆ j | ¡ d S r   )Úexpander_detailsÚget_expandedÚdialog_changesÚset_resizable)ÚwÚexpandedr*   r   r   Ú
_activatedü  s   
z0DistUpgradeViewGtk3.__init__.<locals>._activatedÚactivate)Gr   r   Úlogdirr‹   r¯   ÚjoinÚgetcwdr   Ú
init_checkÚsysÚargvÚget_telemetryÚset_updater_typeru   Úbindtextdomainr   Ú
textdomainÚ	ExceptionrJ   rã   r   Ú	IconThemeÚget_defaultrS   Úset_default_iconÚ	load_iconr   ÚGErrorrK   Úlabel_titleÚ	get_labelrª   Ú	set_labelÚcreate_terminalÚ	prev_stepÚ	iconthemerÔ   rœ   r   rž   r   rŸ   r    r2   r   Ú_opCacheProgressrC   Ú_acquireProgressr   Ú_cdromProgressrz   Ú_installProgressÚ	TreeStoreÚTYPE_STRINGÚdetails_listÚTreeViewColumnÚCellRendererTextÚ
pack_startÚadd_attributeÚtreeview_detailsÚappend_columnÚset_sort_column_idÚSortTypeÚ	ASCENDINGÚ	set_modelr  r  r  rH   Ú_handleExceptionÚ
excepthook)r   Údatadirr  Ú	localedirÚgladedirÚeÚiconsÚtitle_stringÚcolumnÚrenderr  r   r*   r   r   ¿  sj   

€ÿþ
€þ





	zDistUpgradeViewGtk3.__init__c                 C   sf   dd l }| |||¡}t dd |¡ ¡ t|||ƒ tƒ s,|  tdƒtdƒd |¡¡ t 	d¡ d S )Nr   znot handled exception:
%sÚ
zA fatal error occurredzÿPlease report this as a bug (if you haven't already) and include the files /var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in your report. The upgrade has aborted.
Your original sources.list was saved in /etc/apt/sources.list.distUpgrade.r   )
Ú	tracebackÚformat_exceptionrJ   r˜   r  r
   r	   rQ   r  Úexit)r   rO   r    ÚtbrH  Úlinesr   r   r   r=    s   
ùz$DistUpgradeViewGtk3._handleExceptionc                 C   s   t | | jƒS r   )rå   r€   r*   r   r   r   ÚgetTerminal!  r  zDistUpgradeViewGtk3.getTerminalc                 C   sš   | j d u rHz4zddlm} W n ty   ddlm} Y nw | ¡ | _ | j  ¡ }| dd¡ | j 	| j ddd¡ W n   t
 d¡ t ¡  Y S t| j ƒS )Nr   rõ   )ÚWebKitzenable-pluginsFTzhtml widget)rÔ   r÷   rö   rú   rN  ÚWebViewÚget_settingsÚset_propertyÚ	vbox_mainÚpack_endrJ   Ú	exceptionr   ÚSampleHtmlViewró   )r   rN  Úsettingsr   r   r   ÚgetHtmlView#  s   
ÿ



zDistUpgradeViewGtk3.getHtmlViewc                 C   sN   t |jƒdkr%t|jƒdkr%tdƒ}tdƒ}|  ||¡}t d|¡ | S dS )Nr   é   zCtrl-c pressedzkThis will abort the operation and may leave the system in a broken state. Are you sure you want to do that?z5ctrl-c press detected, user decided to pass it on: %sF)ÚlenÚstringÚordrQ   ÚaskYesNoQuestionrJ   rã   )r   rL   Úkeyevr§   rb   rd   r   r   r   Ú_key_press_handler3  s   ÿz&DistUpgradeViewGtk3._key_press_handlerc                 C   sè   t j ¡ | _t| jdƒs| jj| j_| j d| j¡ t	 
d¡}| j |¡ g | _| j | jddd¡ | j ¡  t ¡ | _| j ¡  | j | jddd¡ | j | j ¡ ¡ zttj | jd¡dƒ| _W | jS  tys   tj| _Y | jS w )z! helper to create a vte terminal rË   zkey-press-eventzmonospace 10Tr   zterm.logr  )r   ÚTerminalrº   r€   ÚhasattrÚset_pty_objectrË   rH   r^  r   Úfont_description_from_stringÚset_fontÚ_terminal_linesÚhbox_customr5  rœ   r   Ú
VScrollbarÚvscrollbar_terminalrg   Úset_adjustmentÚget_vadjustmentrû   r‹   r¯   r  r  Ú_terminal_logr   r  r©   )r   Úfontdescr   r   r   r)  ?  s(   



ý
ýz#DistUpgradeViewGtk3.create_terminalc                 C   ó   | j S r   )r-  r*   r   r   r   ÚgetAcquireProgressX  ó   z&DistUpgradeViewGtk3.getAcquireProgressc                 C   s   || j _| j S r   )r/  r}   )r   Úcacher   r   r   ÚgetInstallProgressZ  s   z&DistUpgradeViewGtk3.getInstallProgressc                 C   rl  r   )r,  r*   r   r   r   ÚgetOpCacheProgress]  rn  z&DistUpgradeViewGtk3.getOpCacheProgressc                 C   rl  r   )r.  r*   r   r   r   ÚgetCdromProgress_  rn  z$DistUpgradeViewGtk3.getCdromProgressc                 C   s   | j  d| ¡ d S )Nr  rß   )r   rb   r   r   r   ÚupdateStatusa  s   z DistUpgradeViewGtk3.updateStatusc                 C   ó4   t | d|j ƒ}t | d|j ƒ}| ¡  | ¡  d S ©Núimage_step%iúlabel_step%i)Úgetattrr    rh   ©r   r&   ÚimageÚlabelr   r   r   ÚhideStepc  s   zDistUpgradeViewGtk3.hideStepc                 C   rt  ru  )rx  r    rg   ry  r   r   r   ÚshowStepi  s   zDistUpgradeViewGtk3.showStepc                 C   sX   t jj}| j}|r*t| d|j ƒ}t| d|j ƒ}| t j|¡ | ¡  | 	¡  d S d S )Nrv  úarrow_step%i)
r   ÚIconSizeÚMENUr*  rx  r    Úset_from_stockÚSTOCK_CANCELrg   rh   )r   Úsizer&   rz  Úarrowr   r   r   Úabortn  s   ûzDistUpgradeViewGtk3.abortc                    sò   t t| ƒ |¡ | j ¡ rt d¡ tjj	}t
 ¡ }| jrMt| d| jj ƒ}t| d| jj ƒ}t| d| jj ƒ}| d|¡ | tj|¡ | ¡  | ¡  || _t| d|j ƒ}t| d|j ƒ}t| d|j ƒ}| d¡sod S | ¡  | ¡  d S )Nzicon theme changed, re-readingrv  rw  r~  Ú
attributesÚvisible)r8   r  ÚsetStepr+  Úrescan_if_neededrJ   rK   r   r  r€  r   ÚAttrListr*  rx  r    rQ  r  ÚSTOCK_APPLYrg   rh   rÕ   )r   r&   rƒ  Úattrlistrz  r{  r„  r<   r   r   rˆ  w  s*   


zDistUpgradeViewGtk3.setStepc                 C   s¶   | j  d¡ | j  | j¡ d||f }| j |¡ |d kr-| j ¡ }| |¡ | j	 
¡  n| j	 ¡  | j  ¡  | j  ¡  tjj¡ | j  ¡  | j  ¡  t ¡ rYt ¡  t ¡ sOd S d S )Nr)   r—   )Údialog_informationr\   r›   rS   Úlabel_informationrZ   Útextview_informationr£   r   Úscroll_informationrg   rh   rœ   r   rž   r   rŸ   r    r[   r   r#   r$   ©r   r§   rb   Úextended_msgÚbufferr   r   r   Úinformation•  s    





ÿzDistUpgradeViewGtk3.informationc                 C   sš   | j  d¡ | j  | j¡ d||f }| j |¡ |d kr-| j ¡ }| |¡ | j	 
¡  n| j	 ¡  | j  ¡  | j  ¡  tjj¡ | j  ¡  | j  ¡  dS )Nr)   r—   F)rš   r\   r›   rS   r¡   rZ   r¢   r£   r   r¤   rg   rh   rœ   r   rž   r   rŸ   r    r[   r‘  r   r   r   r˜   §  s   





zDistUpgradeViewGtk3.errorTc                 C   s¢  t  | ||||¡sdS |  jdtdƒ 7  _|d kr6| j d¡ | j d¡ | j |d ¡ | j |d ¡ | j	 
d| ¡ | j 
| j¡ | j ¡  tdƒ| jftd	ƒ| jftd
ƒ| jftdƒ| jftdƒ| jftdƒ| jffD ],\}}|rœ| j d |t|ƒ g¡}	|D ]}
| j |	d|
jt t|
jdd ƒ¡f g¡ q„qp| j ¡  | j | j¡ | j d¡ | j  ¡  !t"j#j$t"j#j%B ¡ | j &¡ }| j '¡  |t(j)j*krÏdS dS )NFz

<b>%s</b>z?To prevent data loss close all open applications and documents.Tr   r   z<big><b>%s</b></big>z%No longer supported by Canonical (%s)z<b>Downgrade (%s)</b>zRemove (%s)zNo longer needed (%s)zInstall (%s)zUpgrade (%s)z<b>%s</b> - %sr§   r)   )+r   ÚconfirmChangesÚconfirmChangesMessagerQ   Úbutton_cancel_changesÚset_use_stockÚset_use_underliner(  Úbutton_confirm_changesÚlabel_summaryrZ   Úlabel_changesr2  ÚclearÚ	demotionsÚtoDowngradeÚtoRemoveÚtoRemoveAutoÚ	toInstallÚ	toUpgrader‘   rY  Únamer   Úmarkup_escape_textrx  Ú	candidater  rœ   r›   rS   r\   r   rž   r   rŸ   r    ÚRESIZEr[   rh   r   r^   r¶   )r   r§   Úchangesrž  ÚdownloadSizeÚactionsÚremoval_boldÚparent_textr2  Únoder¥   rd   r   r   r   r•  ¹  sT   
ÿÿ
úÿ
ÿ€
ÿ

z"DistUpgradeViewGtk3.confirmChangesÚNoc                 C   sŠ   d||f }t j| jt jjt jjt jjd}| 	d¡ |dkr'| 
t jj¡ n| 
t jj¡ | |¡ | ¡ }| ¡  |t jjkrCdS dS )Nr—   rM   r)   r®  TF)r   rR   rS   rT   rU   rV   rW   rX   ÚYES_NOr\   Úset_default_responser^   ÚNOr¶   rZ   r[   r]   ©r   r§   rb   Údefaultrc   rd   r   r   r   r\  é  s    ý

z$DistUpgradeViewGtk3.askYesNoQuestionÚCancelc                 C   s®   |rd||f }t j| jt jjt jjt jjd}| 	d¡ | 
|¡ | tdƒt jjtdƒt jj¡ |dkr>| t jj¡ n| t jj¡ | ¡ }| ¡  |t jjkrUdS dS )Nr—   rM   r)   r´  ÚContinueTF)r   rR   rS   rT   rU   rV   ÚWARNINGrX   ÚNONEr\   rZ   Úadd_buttonsrQ   r^   ÚCANCELÚACCEPTr°  r[   r]   r²  r   r   r   ÚaskCancelContinueQuestionû  s(   ý

ÿz-DistUpgradeViewGtk3.askCancelContinueQuestionc                 C   s`   | j  | j¡ | j  d¡ | j  ¡  | j  ¡  tjj	¡ | j  
¡ }| j  ¡  |tjjkr.dS dS )Nr)   TF)Údialog_restartr›   rS   r\   rœ   r   rž   r   rŸ   r    r[   rh   r   r^   r¶   )r   rd   r   r   r   ÚconfirmRestart  s   


z"DistUpgradeViewGtk3.confirmRestartc                 C   s    t  ¡ rt  ¡  t  ¡ sd S d S r   )r   r#   r$   r*   r   r   r   ÚprocessEvents  s   ÿz!DistUpgradeViewGtk3.processEventsFc                 C   s"   | j  ¡  |r| j  d¡ d S d S )NrÑ   )r   rk   r   )r   rˆ   r   r   r   ÚpulseProgress"  s   
ÿz!DistUpgradeViewGtk3.pulseProgressc                 C   sf   | j  | j¡ | j  d¡ | j  ¡  | j  ¡  tjj	¡ | j  
¡ }| j  ¡  |tjjkr1t d¡ dS )Nr)   r   T)Údialog_cancelr›   rS   r\   rœ   r   rž   r   rŸ   r    r[   rh   r   r^   r¹  r  rJ  )r   rL   r  rd   r   r   r   Úon_window_main_delete_event'  s   



z/DistUpgradeViewGtk3.on_window_main_delete_event)NNr   rÚ   )r®  )r´  rò   )r.   r/   r0   r1   r   r=  rM  rW  r^  r)  rm  rp  rq  rr  rs  r|  r}  r…  rˆ  r”  r˜   r•  r\  r»  r½  r¾  r¿  rÁ  rB   r   r   r<   r   r  ½  s6    
L	


ÿ
0

r  Ú__main__)z/usr/bin/dpkgz--configurez-aÚTODOzTODO~ÚshortÚlonga²  asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
Úxxéd   )DÚgirì   Úrequire_versionr÷   r   r   rÄ   rº   rÅ   r   r   r   r   r   r  ru   rJ   r¬   r±   Úaptrp   r‹   ÚDistUpgradeApportr	   r
   r   r   r   r   Ú	telemetryr   r  ÚSimpleGtk3builderAppr   r   ÚDistUpgradeGettextrQ   r   ÚbaseÚCdromProgressr   Ú
OpProgressr2   rC   rz   Úobjectrå   ró   r  r.   r   ÚfpÚiprM  rñ   ÚmainrJ  ÚCachero  r  r¥   r   Úmark_deleteÚmark_installÚcommitrÀ   r˜   r•  r   r   r   r   Ú<module>   sz   ûC D2  
x
ÿ	à