U
    ٪zck                     @   s  d dl Z dZz e dd d dlmZ dZW n8 ek
rd   e dd d dlmZ ejjej_Y nX 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re0 Z2e+e2Z3e,e2Z4e25 6d"d#d$g e	7  e8d  e9 Z:ej;dd D ],Z<e:e< j=r.e:e< >  ne:e< ?  qe:@e3e4 e	7  e4Ad%d& e25 6d"d#d$g e2Bd'd(d) e2Cd*g d+ 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   s>   |r| j | | j|jt| j  t r:t	  q(dS )z; update is called regularly so that the gui can be redrawn N)
r   set_textr   set_fractionvaluefloatZ
totalStepsr   events_pendingmain_iteration)r   textstepr   r   r   updateF   s
    zGtkCdromProgressAdapter.updatec                 C   s   dS )N)F r   r   r   r   r   ask_cdrom_nameM   s    z&GtkCdromProgressAdapter.ask_cdrom_namec                 C   s   dS )NFr   r(   r   r   r   change_cdromO   s    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   r1   r   r   r   r   T   s    zGtkOpProgress.__init__Nc                    sV   t t| | | jd }t| j| dkr@|| _| j| j t	 rRt
  q@d S )N      Y@皙?)superr/   r&   percentabsr2   r1   r   r   r"   r#   )r   r6   Znew_fraction	__class__r   r   r&   Z   s    
zGtkOpProgress.updatec                 C   s   | j d d S )N )r1   r   r(   r   r   r   doneg   s    zGtkOpProgress.done)N)r+   r,   r-   r   r&   r;   __classcell__r   r   r8   r   r/   S   s   r/   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 )NFZclicked)r5   r=   r   r   r   r   r   r   canceledZbutton_fetch_cancelbutton_cancelconnectcancelClickedr   r8   r   r   r   o   s    z"GtkAcquireProgressAdapter.__init__c                 C   s   t d d| _d S )NrA   T)loggingdebugr>   )r   widgetr   r   r   rA   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rfdS dS )Nz&Please insert '%s' into the drive '%s'r   flagstypeZbuttonsr'   TF)_r   MessageDialogr   window_mainDialogFlagsMODALMessageTypeQUESTIONButtonsTypeZ	OK_CANCEL
set_markuprun	set_titledestroyResponseTypeZOK)r   ZmediumZdrivemsgdialogresr   r   r   media_change{   s    


z&GtkAcquireProgressAdapter.media_changec                    s2   t t|   | jd | j  | j  d S )Nr   )r5   r=   startr   r   r   showr?   r(   r8   r   r   rY      s    
zGtkAcquireProgressAdapter.startc                 C   s*   | j d | jtd | j  d S )Nr:   zFetching is complete)r   r   r   rH   r?   hider(   r   r   r   stop   s    zGtkAcquireProgressAdapter.stopc                    s   t t| | t| j| j d  dkr| j| jd  | jd }|| j	krX| j	}| j
dkrt| j
}t|tr|t }| jtd|| j	|f  | jtdt| j  n&| jtd|| j	f  | jd t rt  q| j S )	Nr3   r4   r   r   z!Fetching file %li of %li at %sB/sAbout %s remainingzFetching file %li of %liz  )r5   r=   pulser7   r6   r   get_fractionr   Zcurrent_itemsZtotal_itemscurrent_cpsapt_pkgZsize_to_str
isinstancebytesdecodelocalegetpreferredencodingr   r   rH   r   etar   r"   r#   r>   )r   ownerZcurrentItemr`   r8   r   r   r^      s8    



  
 
zGtkAcquireProgressAdapter.pulse)
r+   r,   r-   r   rA   rX   rY   r\   r^   r<   r   r   r8   r   r=   k   s   	r=   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termr@   child_exitedr   ra   Z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pld}|dkr| jrd	| jks| jd	 jsd
}| jd d| j dg| _dtjkr| jd|  d| _d| _d| _d S )NFzApplying changesr0   r:   Tzcontents-changedZDEBIAN_FRONTENDZgnomezlibgtk3-perlrV   zVTE_PTY_KEEP_FD=%szAPT_LISTCHANGES_FRONTEND=nonezDEBIAN_FRONTEND=%s)r   start_updatefinishedr   r   rH   r   r   rn   set_sensitiverp   rZ   r@   _on_term_content_changedosenvironr   rl   is_installedset_expandedZwritefdenvappend
start_timetime_uilast_activity)r   Zfrontendr   r   r   rs      s.    




z&GtkInstallProgressAdapter.start_updatec                 C   s   t | || td||f  tdd|kr4d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'Z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   errorrB   r   dgettextr   dialog_errorset_transient_forrJ   rH   realizerR   
get_windowset_functionsr   
WMFunctionMOVElabel_errorrP   textview_error
get_bufferr   scroll_errorrZ   rQ   r[   )r   pkgZerrormsgsummaryrU   markupr   r   r   r      s$    zGtkInstallProgressAdapter.errorc                 C   sZ  t d|  t }td| }td}d||f }| jj| | jjd | jj	| jj
 tj|sx|d }tjdrd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r d}
nd}
z| j|
d W n   | j|
d Y nX 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)rB   rC   timerH   r   Zlabel_conffilerP   Zdialog_conffilerR   r   rJ   rw   pathexists
subprocessPopenPIPEZcommunicaterd   Ztextview_conffiler   r   rQ   r[   r~   r   rT   YESrp   Z
feed_childencode)r   ZcurrentnewrY   ZprimZsecr   cmdZdiffrW   Zresponser   r   r   conffile   s>     z"GtkInstallProgressAdapter.conffilec                 C   st   t jt jj}t }|dkrX| jD ]}|d\}}|tj	|< q&|
  dtj	d< n| j| | j| |S )Nr   =1ZDPKG_UNTRANSLATED_MESSAGES)r   Ptynew_syncPtyFlagsDEFAULTrw   forkr{   splitrx   Zchild_setuprp   set_ptyZwatch_child)r   Z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   rp   r   r   r   rv   ,  s    
z2GtkInstallProgressAdapter._on_term_content_changedc                 C   s   | j dkrt | _ t|| j d  dkrR| jt|d  | j|	  |dkr| j
| j  }|| j8 }t|| }d| | }|dkr|dk r| jtdt|  n| jd | jjr| jjd	d
kr| jjd|  d S )Nr0   r3   r4         ?g     N@i  r]   r:   zload-status   zprogress("%s"))r}   r   r7   r   r_   r   r!   r   r   stripr   r~   rH   r   r   _webkit_viewget_propertyZexecute_script)r   r   r6   r   ZdeltaZtime_per_percentrg   r   r   r   status_change3  s"    


z'GtkInstallProgressAdapter.status_changeNc                 C   s$   |d kr|  | _n|| _d| _d S NT)Zget_child_exit_status
apt_statusrt   )r   rp   r   r   r   r   rq   M  s    z&GtkInstallProgressAdapter.child_exitedc                 C   s   | j s|   q | jS r   )rt   update_interfacer   r(   r   r   r   
wait_childV  s    
z$GtkInstallProgressAdapter.wait_childc                 C   s   | j d d S )Nr'   r   r   r(   r   r   r   finish_update[  s    z'GtkInstallProgressAdapter.finish_updatec                 C   s   t |  | jdkr(| j  td | jdkrz| j| j t k rz| j	slt
d| j| j f  d| _	| jjd t rt  qztd d S )Nr0   g?r   z+no activity on terminal for %s seconds (%s)Tg{Gz?)r   r   r}   r   r^   r   sleepr   TIMEOUT_TERMINAL_ACTIVITYr   rB   warningr   Zget_textr   rm   rz   r   r"   r#   r(   r   r   r   r   ^  s    





z*GtkInstallProgressAdapter.update_interface)N)r+   r,   r-   r   r   rs   r   r   r   rv   r   rq   r   r   r   r   r   r   r   ri      s   '
	ri   c                   @   s   e Zd Zdd ZdddZdS )DistUpgradeVteTerminalc                 C   s   || _ || _d S r   )rp   r   )r   r   rp   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rZ jjd d _t r j	t
jjd|d dd d d \}}n  jt
jjd|d dd d \}}|r|dk rd S  jst rt  qtd	 q `d S )
Nc                    s
   d _ d S r   rt   )Zterminalr   r(   r   r   wait_for_childw  s    z3DistUpgradeVteTerminal.call.<locals>.wait_for_childc                    s
   d _ d S r   r   )rD   r(   r   r   r   {  s    rj   TF/r   r4   )vte291rp   rZ   r@   r   rm   ru   rz   rt   Z
spawn_syncr   r   r   Zfork_command_fullr   r"   r#   r   r   )r   r   Zhiddenr   Zsuccessr   r   r(   r   callu  sH    

	
zDistUpgradeVteTerminal.callN)F)r+   r,   r-   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   Zwebkit_viewr   r   r   r     s    zHtmlView.__init__c                 C   st   | j s
d S z4ddlm} |s t| j | | j d| j W n0 tk
rn   | j | | j d| j	 Y nX d S )Nr   WebKit2zload-changedzload-finished)
r   gi.repositoryr   AssertionErrorZload_urir@   _on_load_changedImportErroropen_on_load_finished)r   Zurlr   r   r   r   r     s    zHtmlView.openc                 C   s   | j   d S r   )r   rZ   r(   r   r   r   rZ     s    zHtmlView.showc                 C   s   | j   d S r   )r   r[   r(   r   r   r   r[     s    zHtmlView.hidec                 C   s   |   d S r   )rZ   )r   viewframer   r   r   r     s    zHtmlView._on_load_finishedc                 C   s$   ddl m} ||jjkr |  d S )Nr   r   )r   r   Z	LoadEventZLOAD_FINISHEDrZ   )r   r   eventdatar   r   r   r   r     s    zHtmlView._on_load_changedN)	r+   r,   r-   r   r   rZ   r[   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d9d#d$Zd:d&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r8tjt d}t }nd}tj|d}tt	j
 t d ztd| td W n0 tk
r } ztd|  W 5 d }~X Y nX t |d d tj }z j|d	d
d W n4 tjk
r } ztd|  W 5 d }~X Y nX  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  jABd  fdd}
 jCDd|
  jEt	_Fd S )N.Zmoz/usr/share/locale/Z
gtkbuilderZGTKzubuntu-release-upgraderzError setting locales (%s)z/DistUpgrade.uizsystem-software-update    r   z)error setting default icon, ignoring (%s)%sz20.04r'   Tr   Fc                    s    j  } j|  d S r   )expander_detailsZget_expandeddialog_changesset_resizable)wZexpandedr(   r   r   
_activated  s    
z0DistUpgradeViewGtk3.__init__.<locals>._activatedZactivate)Gr   r   logdirrw   r   joingetcwdr   Z
init_checksysargvget_telemetryZset_updater_typere   bindtextdomainr   
textdomain	ExceptionrB   r   r   Z	IconThemeZget_defaultrJ   Zset_default_iconZ	load_iconr   ZGErrorrC   Zlabel_titleZ	get_labelr   	set_labelcreate_terminal	prev_step	iconthemer   r   r   r   r   r   r   r/   r   _opCacheProgressr=   _acquireProgressr   _cdromProgressri   _installProgressZ	TreeStoreZTYPE_STRINGdetails_listZTreeViewColumnZCellRendererText
pack_startZadd_attributeZtreeview_detailsZappend_columnZset_sort_column_idZSortTypeZ	ASCENDINGZ	set_modelr   r   r   r@   _handleException
excepthook)r   Zdatadirr   Z	localedirZgladedireZiconsZtitle_stringcolumnZrenderr   r   r(   r   r     sb    

 






	zDistUpgradeViewGtk3.__init__c                 C   sf   dd l }||||}tdd|  t||| t sX| tdtdd| t	d d S )Nr   znot handled exception:
%s
zA fatal error occurredzPlease 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_exceptionrB   r   r   r
   r	   rH   r   exit)r   rG   r    tbr   linesr   r   r   r     s    
z$DistUpgradeViewGtk3._handleExceptionc                 C   s   t | | jS r   )r   ro   r(   r   r   r   getTerminal!  s    zDistUpgradeViewGtk3.getTerminalc                 C   s   | j d krzjzddlm} W n  tk
r<   ddlm} Y nX | | _ | j  }|dd | j	| j ddd W n   t
d t  Y S X t| j S )Nr   r   )WebKitzenable-pluginsFTzhtml widget)r   r   r   r   r   ZWebViewZget_settingsset_propertyZ	vbox_mainZpack_endrB   Z	exceptionr   ZDummyHtmlViewr   )r   r   Zsettingsr   r   r   getHtmlView#  s    



zDistUpgradeViewGtk3.getHtmlViewc                 C   sN   t |jdkrJt|jdkrJt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ordrH   askYesNoQuestionrB   r   )r   rD   Zkeyevr   rU   rW   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 n tk
r   tj| _Y nX | jS )z! helper to create a vte terminal r   zkey-press-eventzmonospace 10Tr   zterm.logr   )r   ZTerminalr   ro   hasattrZset_pty_objectr   r@   r   r   Zfont_description_from_stringZset_fontZ_terminal_linesZhbox_customr   r   r   Z
VScrollbarZvscrollbar_terminalrZ   Zset_adjustmentZget_vadjustmentr   rw   r   r   r   Z_terminal_logr   r   r   )r   Zfontdescr   r   r   r   ?  s$    



z#DistUpgradeViewGtk3.create_terminalc                 C   s   | j S r   )r   r(   r   r   r   getAcquireProgressX  s    z&DistUpgradeViewGtk3.getAcquireProgressc                 C   s   || j _| j S r   )r   rl   )r   cacher   r   r   getInstallProgressZ  s    z&DistUpgradeViewGtk3.getInstallProgressc                 C   s   | j S r   )r   r(   r   r   r   getOpCacheProgress]  s    z&DistUpgradeViewGtk3.getOpCacheProgressc                 C   s   | j S r   )r   r(   r   r   r   getCdromProgress_  s    z$DistUpgradeViewGtk3.getCdromProgressc                 C   s   | j d|  d S )Nr   r   )r   rU   r   r   r   updateStatusa  s    z DistUpgradeViewGtk3.updateStatusc                 C   s4   t | d|j }t | d|j }|  |  d S Nimage_step%ilabel_step%i)getattrr    r[   r   r%   imagelabelr   r   r   hideStepc  s    zDistUpgradeViewGtk3.hideStepc                 C   s4   t | d|j }t | d|j }|  |  d S r  )r  r    rZ   r  r   r   r   showStepi  s    zDistUpgradeViewGtk3.showStepc                 C   sT   t jj}| j}|rPt| d|j }t| d|j }|t j| |  |	  d S )Nr  arrow_step%i)
r   IconSizeMENUr   r  r    set_from_stockZSTOCK_CANCELrZ   r[   )r   sizer%   r	  arrowr   r   r   abortn  s    zDistUpgradeViewGtk3.abortc                    s   t t| | | j r$td tjj	}t
 }| jrt| d| jj }t| d| jj }t| d| jj }|d| |tj| |  |  || _t| d|j }t| d|j }t| d|j }|dsd S |  |  d S )Nzicon theme changed, re-readingr  r  r  Z
attributesZvisible)r5   r   setStepr   Zrescan_if_neededrB   rC   r   r  r  r   ZAttrListr   r  r    r   r  ZSTOCK_APPLYrZ   r[   r   )r   r%   r  Zattrlistr	  r
  r  r8   r   r   r  w  s*    


zDistUpgradeViewGtk3.setStepc                 C   s   | j d | j | j d||f }| j| |d krZ| j }|| | j	
  n
| j	  | j   | j  tjj | j   | j   t rt  qd S )Nr'   r   )Zdialog_informationrR   r   rJ   Zlabel_informationrP   Ztextview_informationr   r   Zscroll_informationrZ   r[   r   r   r   r   r   r   rQ   r   r"   r#   r   r   rU   Zextended_msgbufferr   r   r   information  s    





zDistUpgradeViewGtk3.informationc                 C   s   | j d | j | j d||f }| j| |d krZ| j }|| | j	
  n
| j	  | j   | j  tjj | j   | j   dS )Nr'   r   F)r   rR   r   rJ   r   rP   r   r   r   r   rZ   r[   r   r   r   r   r   r   rQ   r  r   r   r   r     s    





zDistUpgradeViewGtk3.errorTc                 C   s  t | ||||sdS |  jdtd 7  _|d krl| 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 ]Z\}}|r| jd |t| g}	|D ]0}
| j|	d|
jtt|
jdd f g qq| j  | j| j | jd | j  !t"j#j$t"j#j%B  | j& }| j'  |t(j)j*krd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   confirmChangesZconfirmChangesMessagerH   Zbutton_cancel_changesZset_use_stockZset_use_underliner   Zbutton_confirm_changesZlabel_summaryrP   Zlabel_changesr   clear	demotionsZtoDowngradeZtoRemoveZtoRemoveAutoZ	toInstallZ	toUpgrader|   r   namer   Zmarkup_escape_textr  	candidater   r   r   rJ   rR   r   r   r   r   r   ZRESIZErQ   r[   r   rT   r   )r   r   Zchangesr  ZdownloadSizeZactionsZremoval_boldZparent_textr   Znoder   rW   r   r   r   r    sV    
 

 


z"DistUpgradeViewGtk3.confirmChangesNoc                 C   s   d||f }t j| jt jjt jjt jjd}|	d |dkrN|
t jj n|
t jj || | }|  |t jjkrdS dS )Nr   rE   r'   r  TF)r   rI   rJ   rK   rL   rM   rN   rO   ZYES_NOrR   set_default_responserT   ZNOr   rP   rQ   rS   r   r   rU   defaultrV   rW   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rdS dS )Nr   rE   r'   r!  ZContinueTF)r   rI   rJ   rK   rL   rM   ZWARNINGrO   ZNONErR   rP   Zadd_buttonsrH   rT   CANCELZACCEPTr  rQ   rS   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)Zdialog_restartr   rJ   rR   r   r   r   r   r   r   rQ   r[   r   rT   r   )r   rW   r   r   r   confirmRestart  s    


z"DistUpgradeViewGtk3.confirmRestartc                 C   s   t  rt   q d S r   )r   r"   r#   r(   r   r   r   processEvents  s    z!DistUpgradeViewGtk3.processEventsFc                 C   s   | j   |r| j d d S )Nr   )r   r^   r   )r   rt   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rbtd dS )Nr'   r   T)Zdialog_cancelr   rJ   rR   r   r   r   r   r   r   rQ   r[   r   rT   r"  r   r   )r   rD   r   rW   r   r   r   on_window_main_delete_event'  s    



z/DistUpgradeViewGtk3.on_window_main_delete_event)NN)N)N)NT)r  )r!  )F)r+   r,   r-   r.   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r   r#  r$  r%  r&  r'  r<   r   r   r8   r   r     s6   
L	

   
0


r   __main__z/usr/bin/dpkgz--configurez-aZTODOzTODO~ZshortZ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
Zxxd   )DZgir   Zrequire_versionr   r   r   r   r   r   r   r   r   r   r   r   re   rB   r   r   Zaptra   rw   ZDistUpgradeApportr	   r
   r   r   r   r   Z	telemetryr   r   ZSimpleGtk3builderAppr   r   ZDistUpgradeGettextrH   r   baseZCdromProgressr   Z
OpProgressr/   r=   ri   objectr   r   r   r+   r   fpZipr   r   mainr   ZCacher   r   r   ry   Zmark_deleteZmark_installZcommitr   r   r  r   r   r   r   <module>   st   C D2  x

	