
    4e¤                     b   	 d dl mZ  e       dk(  reddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZ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&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/m0Z0 d dl1m2Z2 d dl3m4Z5 dd	l6Z6dd	l7Z7d dl8m7Z9 d dl8m:Z: d dl;m;Z; d1dZ<d Z=d Z>g fdZ?d Z@ej                  e_A        e@e_@         G d d      ZB G d de      ZC G d de$j                  j                  j                        ZG G d de$j                  j                  j                        ZI G d de0      ZJ G d  d!e/      ZK G d" d#e      ZL G d$ d%e-      ZMeNd&k(  r eM       ZOeOj                  d'd(       ej                  d    d)k(  reOj                  j                         ZTeTdk(  r$ e"j                  d*g        ej                          	 eOj                  j                           ej                           e!j                  d,       >ej                  d    d-k(  r eZej                  d.         5 Z[e[j                         Z]d	d	d	       e]D ]@  Z^eOj                  j                  e^        ej                           e!j                  d/       B 	  ej                           e$j                         Zaej                  d d	 D ]I  Zbeaeb   j                  r%eaeb   j                  seaeb   j                  d+0       7eaeb   j                          K eaj                  eOj                  eOj                         	  ej                          y	# e$ r8 ddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ Y Tw xY w# 1 sw Y   HxY w)2   )get_disttrusty    )uic)QtQLocaleQTranslatorPYQT_VERSIONQTimer)
	QTextEditQApplicationQDialogQMessageBoxQDialogButtonBoxQTreeWidgetItemQPushButtonQWidgetQHBoxLayoutQLabel)QTextOptionQPixmapQIconQTextCursor)r   r   r   r   r   r   r   r   r   r   r   r   r   r   N)
run_apportapport_crash)DistUpgradeViewFuzzyTimeToStrInstallProgressAcquireProgress)DistUpgradeConfig)get)gettext)unicode_gettext)
QUrlOpenerc                 J    t        | t              r| j                  d|      S | S )NUTF-8)
isinstancebytesdecode)serrorss     @/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeViewKDE.pyutf8r-   M   s"    !Uxx((    c                     t         j                  j                  |       rt        j                  | |       y t        d| z          y )Nzerror, can't find file: )ospathexistsr   loadUiprint)fileparents     r,   r3   r3   T   s0    	ww~~d

4  	(4/0r.   c                 X    t         j                  j                  |       rt        |       S y N)r0   r1   r2   r   )r1   s    r,   _find_pixmapr9   [   s    	ww~~dt}r.   c                     t        t              t        k(  rt        j                  |       S |D ]  }t        |      }|st        |      c S  y r8   )typer
   intr   	fromThemer9   )name	fallbacksr1   pixmaps       r,   _iconrA   `   sI    LS t$$ 	%D!$'FV}$	% r.   c                 H    | j                         s| j                  |        y y r8   )isMaximizedorigAdjustSizeselfs    r,   
adjustSizerG   q   s!    D! r.   c                   4    e Zd ZdZdZddZd Zd Zd Zd Z	y)	
_OSReleasez/etc/os-releasec                     i | _         d| _        t        j                  | _        t
        j                  j                  | j                        sy | j                          d| _        |r| j                          y y )NFT)
resultvalidrI   OS_RELEASE_FILEr5   r0   r1   isfileparseinject_lsb_compat)rF   
lsb_compats     r,   __init__z_OSRelease.__init__{   sX    
..	ww~~dii(


""$ r.   c                    | j                   d   | j                   d<   | j                   d   | j                   d<   | j                   j                  d      | j                   d<   | j                   d   s(| j                   j                  d      | j                   d<   | j                   j                  d      | j                   d	<   y )
NIDzDistributor IDPRETTY_NAMEDescriptionVERSION_CODENAMECodenameUBUNTU_CODENAME
VERSION_IDRelease)rK   r!   rE   s    r,   rP   z_OSRelease.inject_lsb_compat   s    (,D(9$%%)[[%?M""&++//2D"EJ{{:&&*kkoo6G&HDKK
#!%!>Ir.   c                     t        | j                  d      }|D ]4  }|j                         }|s | j                  |j	                  dd        6 |j                          y )Nr=r   )openr5   stripparse_entrysplitclose)rF   flines      r,   rO   z_OSRelease.parse   sX    C  	2D::<DDdjja01		2
 	
	r.   c                     | j                  |      }|dk(  r!t        |t              r|j                  d      }|| j                  |<   y )NID_LIKE )parse_valuer'   strrb   rK   )rF   keyvalues      r,   ra   z_OSRelease.parse_entry   sA      ')
5# 6 KK$E Cr.   c                 V    t        j                  |      }t        |      dk(  r|d   S |S )Nr   r   )shlexrb   len)rF   rl   valuess      r,   ri   z_OSRelease.parse_value   s+    U#v;!!9r.   N)T)
__name__
__module____qualname__DEFAULT_OS_RELEASE_FILErM   rR   rP   rO   ra   ri    r.   r,   rI   rI   w   s&    /'O%?!r.   rI   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	DumbTerminalz A very dumb terminal c                    t        j                  | d|       || _        | j                  d       | j	                  d       | j                  t        j                         | j                  d       | j                  d       d| _
        y)z2 really dumb terminal with simple editing support  	Monospace   FTN)r   rR   installProgresssetFontFamilysetFontPointSizesetWordWrapModer   NoWrapsetUndoRedoEnabledsetOverwriteMode_block)rF   r|   parent_frames      r,   rR   zDumbTerminal.__init__   so    4\2.;'a [//0&d#r.   c                     t        j                         \  | _        | j                  _        | j                  dk(  rdt
        j                  d<   | j                  S )
pty voodoor   dumbTERM)ptyfork	child_pidr|   	master_fdr0   environrE   s    r,   r   zDumbTerminal.fork   sA    ;>88:8--7>>Q!'BJJv~~r.   c                 2   t        j                   | j                  j                  gg g d      \  }}}t        |      dkD  rDt	        j
                  | j                  j                  d      }| j                  t        |             t        j                          y )Nr      )
selectr|   r   ro   r0   readinsertWithTermCodesr-   r   processEvents)rF   rlistwlistxlistre   s        r,   update_interfacezDumbTerminal.update_interface   ss     &t/C/C/M/M.NrRTVW Xuu:>774//993?D$$T$Z0""$r.   c                     d}|D ]e  }t        |      dk(  r2| j                  |       | j                         j                          d}C|t	        d      k(  rR|t	        d      k(  ra||z  }g | j                  |       y)z support basic terminal codes ry   r{         N)ordinsertPlainText
textCursordeletePreviousCharchr)rF   textdisplay_textcs       r,   r   z DumbTerminal.insertWithTermCodes   s}     	"A1v{$$\2!446c"gc!f!	" 	\*r.   c                    t        | j                  d      sy|j                         t        j                  k(  r4t        j                  | j                  j                  t        d             y|j                         syt        j                  | j                  j                  |j                         j                  d             y)z$ send (ascii) key events to the pty r   Nr{   zutf-8)hasattrr|   rk   r   Key_Backspacer0   writer   r   r   encode)rF   evs     r,   keyPressEventzDumbTerminal.keyPressEvent   s     t++[9668r'''HHT))33SV<wwy
%%//1A1A'1JKr.   c                 x    | j                   ryd| _         | j                  t        j                         d| _         y)z: helper that ensures that the cursor is always at the end NTF)r   
moveCursorr   EndrE   s    r,   onCursorPositionChangedz$DumbTerminal.onCursorPositionChanged   s*    ;;(r.   N)
rq   rr   rs   __doc__rR   r   r   r   r   r   ru   r.   r,   rw   rw      s$     
%+&L r.   rw   c                   (    e Zd ZdZd Zd Zd Zd Zy)KDECdromProgressAdapterz Report the cdrom add progress c                 ~    |j                   j                  | _        |j                   j                  | _        || _        y r8   )window_mainlabel_statusstatusprogressbar_cacheprogressbarr6   rF   r6   s     r,   rR   z KDECdromProgressAdapter.__init__   s0    ((55!--??r.   c                     |r| j                   j                  |       | j                  j                  t	        |j
                  t        | j                        z               t        j                          y)z; update is called regularly so that the gui can be redrawn N)
r   setTextr   setValuer<   rl   float
totalStepsr   r   )rF   r   steps      r,   updatezKDECdromProgressAdapter.update   sN    
++

d
#!!#djjt1G&G"HI""$r.   c                      y)N)Fry   ru   rE   s    r,   ask_cdrom_namez&KDECdromProgressAdapter.ask_cdrom_name  s    r.   c                      y)NFru   rE   s    r,   change_cdromz$KDECdromProgressAdapter.change_cdrom  s    r.   N)rq   rr   rs   r   rR   r   r   r   ru   r.   r,   r   r      s    )
%r.   r   c                   0     e Zd ZdZd Zd fd	Zd Z xZS )KDEOpProgressz methods on the progress bar c                      || _         || _        y r8   )r   progressbar_label)rF   r   r   s      r,   rR   zKDEOpProgress.__init__  s    $d0dr.   c                     t         t        |   |       | j                  j	                  t        | j                               t        j                          y r8   )	superr   r   r   r   r<   percentr   r   )rF   r   	__class__s     r,   r   zKDEOpProgress.update  s=    M4'0 DLL 12  "r.   c                 :    | j                   j                  d       y Nry   )r   r   rE   s    r,   donezKDEOpProgress.done  s    
$$R(r.   r8   )rq   rr   rs   r   rR   r   r   __classcell__r   s   @r,   r   r     s    %1#)r.   r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)KDEAcquireProgressAdapterz? methods for updating the progress bar while fetching packages c                     t        j                  |        |j                  j                  | _        |j                  j
                  | _        || _        y r8   )r   rR   r   r   r   r   progressr6   r   s     r,   rR   z"KDEAcquireProgressAdapter.__init__&  s=      &((55**<<r.   c                     t        d      ||fz  }t        j                  | j                  j                  t        d      |t        j
                  t        j                        }|t        j
                  k(  ryy)Nz&Please insert '%s' into the drive '%s'zMedia ChangeTF)_r   questionr6   r   OkCancel)rF   mediumdrivemsgchanges        r,   media_changez&KDEAcquireProgressAdapter.media_change-  s^    676%.Hc##DKK$;$;Q~=NPSU`UcUcepewewxf	;>>	!r.   c                     t        j                  |        | j                  j                  d       | j                  j                          y )Nr   )r   startr   r   r   showrE   s    r,   r   zKDEAcquireProgressAdapter.start4  s2    d#q!r.   c                     | j                   j                  j                  j                  d       | j                  j                  t        d             y )N  zFetching is complete)r6   r   progress_textr   r   r   rE   s    r,   stopzKDEAcquireProgressAdapter.stop:  s8    --55d;A456r.   c                    t        j                  | |       | j                  j                  t	        | j
                               | j                  dz   }|| j                  kD  r| j                  }| j                  dkD  rt        j                  | j                        }t        |t              r#|j                  t        j                               }| j                   j#                  t%        d      || j                  |fz         | j&                  j(                  j*                  j#                  dt%        d      t-        | j.                        z  z   dz          nb| j                   j#                  t%        d      || j                  fz         | j&                  j(                  j*                  j#                  d       t1        j2                          y	)
z\ we don't have a mainloop in this application, we just call processEvents here and elsewherer   r   z!Fetching file %li of %li at %sB/sz<i>About %s remainingz</i>zFetching file %li of %lir   T)r   pulser   r   r<   r   current_itemstotal_itemscurrent_cpsapt_pkgsize_to_strr'   r(   r)   localegetpreferredencodingr   r   r   r6   r   r   r   etar   r   )rF   ownercurrent_itemr   s       r,   r   zKDEAcquireProgressAdapter.pulse>  sa    	dE*s4<<01))A-$***++La!--d.>.>?K+u-)001L1L1NOKK"E F,X\XhXhjuIv vwKK##1199%!DXBY\jkoksks\tBt:tw}:}~KK"< =tO_O_@` `aKK##1199$?""$r.   N)	rq   rr   rs   r   rR   r   r   r   r   ru   r.   r,   r   r   !  s    I7r.   r   c                   P    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)KDEInstallProgressAdapterz?methods for updating the progress bar while installing packages   c                 <   t        j                  |        d | _        |j                  j                  | _        |j                  j
                  | _        |j                  j                  | _        || _        	 t        dd      | _
        t$        j&                  j)                  dd       y # t        $ rj}t        j                  d|z         t        j                  dk\  r t        j                   j"                  | _
        nt        j                   | _
        Y d }~d }~ww xY w)Nz/var/log/dist-upgrade/term.logwbzCan not open terminal log: '%s'3zDPkg::StopOnErrorFalse)r   rR   _cacher   r   r   r   r   r6   r_   _terminal_log	Exceptionloggingerrorsysversionstdoutbufferr   configset)rF   r6   es      r,   rR   z"KDEInstallProgressAdapter.__init__\  s      &"..;;**<<#//==	0!%&Ft!LD 	.w7  	0MM;a?@{{c!%(ZZ%6%6"%(ZZ"	0s   6B( (	D1A DDc                 x   t        j                  |        d| _        | j                  j	                  t        d             | j                  j                  d       | j                  j	                  d       d| _	        d| _
        d| _        | j                  j                  j                  j                  d       y )NFzApplying changesr   rh           T)r   start_updatefinishedr   r   r   r   r   r   
start_timetime_uilast_activityr6   r   showTerminalButton
setEnabledrE   s    r,   r  z&KDEInstallProgressAdapter.start_updateo  s    $$T* 	!!!$6"78q!""3' 22==dCr.   c                    t        j                  | ||       t        j                  d|d|d       t        j                  dd      |v ryt        d      |z  }t        d      |z  }d	|d
|}t        | j                  j                        }t        d|       | j                  j                  |       |j                  j                  |       |d k7  r6|j                  j                  |       |j                  j                          n|j                  j                          |j!                          |j#                          y )Nz!got an error from dpkg for pkg: '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></b></big><br />dialog_error.ui)r   r   r   r"   dgettextr   r   r6   r   r3   translate_widget_childrenlabel_errorr   textview_errorr   hiderG   exec_)rF   pkgerrormsgsummaryr   dialogues         r,   r   zKDEInstallProgressAdapter.error~  s   dC2c8TUF$PQU]],-3 ' (*-. 18=4;;223 (+--h7$$S)t##++H5##((*##((*r.   c                    t        j                  d|z         t        j                         }t        d      |z  }t        d      }d|d|}t	        | j
                  j                        | _        t        d| j                         | j                  j                  j                  |       | j                  j                  j                          | j                  j                  j                  j                  | j                          t"        j$                  j'                  |      s|dz   }t"        j$                  j'                  d      rtdd	||g}t)        j*                  |t(        j,                  
      j/                         d   }|j1                  dd      }| j                  j                  j                  |       n.| j                  j                  j                  t        d             | j                  j3                         }	| xj4                  t        j                         |z
  z  c_        |	t        j6                  k(  r!t#        j8                  | j:                  d       yt#        j8                  | j:                  d       y)z6ask question in case conffile has been changed by userz.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.z"<span weight="bold" size="larger">z </span> 

zdialog_conffile.uiz
.dpkg-distz/usr/bin/diffz-u)r   r   r&   replacez The 'diff' command was not founds   y
s   n
N)r   debugtimer   r   r6   r   confDialoguer3   label_conffiler   textview_conffiler  show_difference_buttonclickedconnectshowConffiler0   r1   r2   
subprocessPopenPIPEcommunicater)   r  r
  Acceptedr   r   )
rF   currentnewr   primsecmarkupcmddiffrK   s
             r,   conffilez"KDEInstallProgressAdapter.conffile  s   FPQ		CDwN # $ OSTWX#DKK$;$;<#T%6%67((008++002 	0088@@ARARS ww~~g&L(' 77>>/* $5#!!#joo>JJLQO$Wi0$



-
-
5
5d
;



-
-
5
5a8Z6[
\""((*		e++W%%%HHT^^V,HHT^^V,r.   c                    | j                   j                  j                         rS| j                   j                  j                          | j                   j                  j                  t        d             y | j                   j                  j                          | j                   j                  j                  t        d             y )NzShow Difference >>>z<<< Hide Difference)r"  r$  	isVisibler  r%  r   r   r   rE   s    r,   r(  z&KDEInstallProgressAdapter.showConffile  s    ..88://44644<<Q?T=UV//44644<<Q?T=UVr.   c                    t        j                         \  | _        | _        | j                  dk(  radt        j
                  d<   dt        j
                  vst        j
                  d   dk(  rdt        j
                  d<   dt        j
                  d<   t        j                  d	| j                  z         | j                  S )
r   r   r   r   DEBIAN_FRONTENDkdenoninteractivenoneAPT_LISTCHANGES_FRONTENDz fork pid is: %s)r   r   r   r   r0   r   r   r   rE   s    r,   r   zKDEInstallProgressAdapter.fork  s    +.88:(>>Q!'BJJv!3

,-60@

,-5;BJJ12(4>>9:~~r.   c                    | j                   dk(  rt        j                         | _         | j                  j                  t	        | j
                               | j                  j                  t        |j                                      |dkD  rt        j                         | _
        d| _        | j                  | j                   z
  }|| j                  z  }t        |      |z  }d| j
                  z
  |z  }|dkD  r6|dk  r1| j                  j                  t        d      t!        |      z         y	| j                  j                  d       y	y	)
zupdate progress bar and labelr  g      ?Fg      Y@g     N@i  r   rh   N)r	  r!  r   r   r<   r   r   r   r-   r`   r  activity_timeout_reportedr
  r   r   r   r   )rF   r  r   r   deltatime_per_percentr   s          r,   status_changez'KDEInstallProgressAdapter.status_change  s    ??c! IIK$/s4<<01!!$v||~"67S=#yy{$
+0$
($$t6%
4<<
%#El72
%)99#4ZC:.&&q)='>PSAT'TU&&s+ r.   c                 :    | j                   j                  d       y r   )r   r   rE   s    r,   finish_updatez'KDEInstallProgressAdapter.finish_update  s    !!"%r.   c                    	 	 t        j                   | j                  gg g d      \  }}}t        |      dkD  rlt        j                  | j                  d      }| j
                  j                  |       | j                  j                  j                  t        |d             nn	 	 t        j                   |        | j&                  dkD  r| j&                  | j(                  z   t+        j*                         k  r| j,                  sF	 t        j.                  d| j(                  d| j0                  j3                         d
       d| _        | j                  j6                  j8                  j;                          t=        j>                          t+        j@                  d       y# t        $ r.}t        |       t        j                  d|z         Y d}~/d}~ww xY w# t"        $ r8}t        j$                  d| j                  d	|d
       d| _        Y d}~]d}~ww xY w# t4        $ r& t        j.                  d| j(                  z         Y w xY w)z
        no mainloop in this application, just call processEvents lots here
        it's also important to sleep for a minimum amount of time
        Tr   r   r  )r+   z&error reading from self.master_fd '%s'Nz@got ValueError from InstallProgress.update_interface. Line was 'z' ()ry   zno activity on terminal for z
 seconds (z&no activity on terminal for %s secondsg{Gz?)!r   r   ro   r0   r   r   r   r6   terminal_textr   r-   r   r4   r   r   r   r   
ValueErrorr   r  TIMEOUT_TERMINAL_ACTIVITYr!  r?  warningr   r   UnicodeEncodeErrorr   konsole_framer   r   r   sleep)rF   r   r   r   re   r  s         r,   r   z*KDEInstallProgressAdapter.update_interface  s    (.t~~6Fr"a(P%uu:>774>>37D&&,,T2KK--AAT)46 6  	

*
*4
0 !!?!??499;N//mQUQoQoqu  rC  rC  rH  rH  rJ  !K  L .2D*
++
!
!
/
/
4
4
6""$

41  aFJK  	
--fjfofoqrs
t$))	 & m HDLjLj klmsB   B!F$ (G >H" $	G-#GG	H'-HH"+IIc                     	 | j                          t        j                  | j                  t        j                        \  }}|| j                  k(  r	 |S Tr8   )r   r0   waitpidr   WNOHANG)rF   pidress      r,   
wait_childz$KDEInstallProgressAdapter.wait_child  sF    !!#DNN2::>JS#dnn$
 r.   N)rq   rr   rs   r   rI  rR   r  r   r5  r(  r   rB  rD  r   rS  ru   r.   r,   r   r   V  sC    I !$8&D2#-JW
,.&(Tr.   r   c                       e Zd Zd Zd Zd Zy)UpgraderMainWindowc                 F    t        j                  |        t        d|        y )Nzwindow_main.ui)r   rR   r3   rE   s    r,   rR   zUpgraderMainWindow.__init__"  s    &r.   c                     || _         y r8   )r6   )rF   	parentRefs     r,   	setParentzUpgraderMainWindow.setParent'  s	    r.   c                 ~    | j                   j                         }|r|j                          y |j                          y r8   )r6   on_window_main_delete_eventacceptignore)rF   eventrc   s      r,   
closeEventzUpgraderMainWindow.closeEvent*  s)    779LLNLLNr.   N)rq   rr   rs   rR   rY  r_  ru   r.   r,   rU  rU     s    '
 r.   rU  c                        e Zd ZdZddZd ZddZd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z fdZddZddZ	 ddZd ZddZddZd Zd ZddZd Z xZS ) DistUpgradeViewKDEz$KDE frontend of the distUpgrade toolc                    t        j                  |        t               j                  d       t	        j
                  d      }|j                  t        j                         |r|dk(  rUt        j                  j                  t        j                         d      }t        t        j                               | _        nd}t        |      | _        	 t        j                  d|       t        j                   d       dt        j&                  vrt#        d	      d
t        j&                  d<   dt        j&                  d<   dt        j&                  d<   d
t        j&                  d<   t)        dg      | _        t-        | j*                        }t/        t0              t2        k(  r'|j5                  t7        j8                         ddd       n&|j5                  t7        j8                         ddd       | j*                  j;                  |       t=               j?                          tA        dddg      }| j*                  jC                  |       tE               | _#        | jF                  jI                  |        | jF                  jK                          d | _&        tO        | jF                  jP                  | jF                  jR                        | _*        tW        |       | _,        t[        |       | _.        t_        |       | _0        | jb                  td        _3        | jF                  jh                  jk                  d       | jF                  jh                  jl                  jo                  | jp                         t        j                  d|       t        j                   d       | js                          tu               jv                  d   }|r|dk(  rd}| j                  jy                  dd      }	t{        j|                         j                  |	      }
| jF                  j                  j                         }|j                  d|      }|j                  d|
      }| jF                  j                  j                  |       | jF                  j                  j                          t        | jF                  j                        | _G        | jF                  j                  j                  d d!       t        | j`                  | jF                  j                        | _J        | j                  j                  | j                         | j                  jK                          t        j                  d"| j                         | j*                  j                          y # t"        $ r#}t	        j$                  d|z         Y d }~d }~ww xY w)#NKDEPyQt4.moz)/usr/share/locale/ubuntu-release-upgraderzubuntu-release-upgraderzError setting locales (%s)DISPLAYzNo DISPLAY in os.environ foundr:  QT_PLATFORM_PLUGINTRUEKDE_FULL_SESSION5KDE_SESSION_VERSIONQT_QPA_PLATFORMTHEMEqtr   z/usr/share/qt5/translationsz/usr/share/qt4/translationszsystem-software-updatez=/usr/share/icons/oxygen/48x48/apps/system-software-update.pngz5/usr/share/icons/hicolor/48x48/apps/adept_manager.pngr?   FrU   UbuntuKubuntuSourcesToz%siX  i  
   )Pr   rR   get_telemetryset_updater_typer   	getLoggersetLevelINFOr0   r1   joingetcwdr    r  r"   bindtextdomain
textdomainr   rJ  r   r   appr	   r;   r
   r<   loadr   systeminstallTranslatorr$   setupUrlHandlesrA   setWindowIconrU  r   rY  r   	prev_stepr   r   r   _opCacheProgressr   _acquireProgressr   _cdromProgressr   _installProgress_handleExceptionr   
excepthookr  r  r&  r'  showTerminalr  rI   rK   r!   distro_infoUbuntuDistroInfor   label_titler   r  r   rL  r  r   konsole_frame_layoutsetMinimumSizerw   rG  	addWidgetr   
singleShotexitMainLoopMidFlightr  )rF   datadirlogdirlogger	localedirr  
translatormessageIconr>   to_dist
to_versiontitle_strings               r,   rR   zDistUpgradeViewKDE.__init__4  sJ     &((/""7+%'S.GGLLT2))"))+6$+?))'2$+	<

 
 !:I
F


6
7 BJJ&<== ,1

'( *0

%& -0

()-2

)*!: ;< !*
$OOGNN,dC9VWOOGNN,dC9VW"":.$$&4'f'^'`a 	{+-/""4( -d.>.>.P.PRVRbRbRpRp q 9$ ?5d; 9$ ? ..++66u=++33;;D<M<MN 	8C45&&(|""=1tx'D++//)T2 113;;GD
''3388:#++Hd;#++D*=$$,,\: 	&&++-$/0@0@0N0N$O!&&55c3?)$*?*?AQAQA_A_`!!++D,>,>?! 	"d889e  	<
//6:
;
;	<s   +V 	V=V88V=c                 N    t        d       | j                  j                          y )Nr  )r4   r~  exitrE   s    r,   r  z(DistUpgradeViewKDE.exitMainLoopMidFlight  s    %&r.   c                    |d k(  r| j                   }t        |t              st        |t              rst	        |j                               dk(  r&|j                  t        j                  dd             n1|j                  t        t	        |j                                            |j                         d k7  r8|j                         D ]$  }| j                  |       | j                  |       & y y )NErrorkdelibs)r   r'   r   r   rj   windowTitlesetWindowTitler"   r  r   childrentranslate_widgetr  )rF   parentWidgetwidgets      r,   r  z,DistUpgradeViewKDE.translate_widget_children  s    4++LlG,
<0Q<++-.'9++W-=-=i-QR++As<3K3K3M/N,PQ  "d*&//1 7%%f-..v67 +r.   c                    t        |t              st        |t              r%t        |j	                               dk(  rGt        j                  dt        j                  d      d      }|j                  t        |d             y t        |j	                               dk(  rGt        j                  dt        j                  d      d      }|j                  t        |d             y t        |j	                               dk7  rB|j                  t        t        |j	                                     j                  dd             y y y )	Nz&Cancelr  T)fallback&Closery   r   &)r'   r   r   rj   r   r"   translationr}  r   r#   r   r  )rF   r  r  s      r,   r  z#DistUpgradeViewKDE.translate_widget  s    ff%FK)H6;;=!Y.!--w11)<tMw	BCV[[]#x/!--w11)<tMwABV[[]#r)#fkkm"4 5 = =c3 GI * *Ir.   c                 T   t        |t              st        |t              ryt        j                  |||      }t        j                  ddj                  |      z         t        |||       t               sdj                  t        j                  |||            }t        | j                        }t        d|       | j                  | j                         |j                  j!                  |       |j#                          |j%                          t'        j(                  d       y)zCrash handler.Nz)not handled exception in KDE frontend:
%s
ry   r  r   )
issubclassKeyboardInterrupt
SystemExit	tracebackformat_exceptionr   r   rz  r   r   r   r   r3   r  dialogcrash_detailr   rG   r  r   r  )rF   exctypeexcvalueexctblinestbtextr  s          r,   r  z#DistUpgradeViewKDE._handleException  s     w 12w
+ **7HeDBTYYuEUUV 	Wh.|WWY775QRFT--.F$f-**4;;7''/LLNr.   c                    | j                   j                  j                         rS| j                   j                  j                          | j                   j                  j                  t        d             nR| j                   j                  j                          | j                   j                  j                  t        d             | j                   j                          y )NzShow Terminal >>>z<<< Hide Terminal)	r   rL  r7  r  r  r   r   r   rG   rE   s    r,   r  zDistUpgradeViewKDE.showTerminal  s    ))335**//1//77:M8NO**//1//77:M8NO##%r.   c                     | j                   S r8   )r  rE   s    r,   getAcquireProgressz%DistUpgradeViewKDE.getAcquireProgress      $$$r.   c                 <    || j                   _        | j                   S r8   )r  r   )rF   caches     r,   getInstallProgressz%DistUpgradeViewKDE.getInstallProgress  s    ',$$$$r.   c                     | j                   S r8   )r  rE   s    r,   getOpCacheProgressz%DistUpgradeViewKDE.getOpCacheProgress  r  r.   c                     | j                   S r8   )r  rE   s    r,   getCdromProgressz#DistUpgradeViewKDE.getCdromProgress  s    """r.   c                 N    | j                   j                  j                  |       y r8   )r   r   r   )rF   r   s     r,   update_statusz DistUpgradeViewKDE.update_status  s    %%--c2r.   c                     t        | j                  d|j                  z        }t        | j                  d|j                  z        }|j                          |j                          y )Nimage_step%ilabel_step%i)getattrr   rl   r  )rF   r   imagelabels       r,   hideStepzDistUpgradeViewKDE.hideStep  sJ    (($**)DE(($**)DE



r.   c                     | j                   }|rdt        | j                  d|j                  z        }t	        dg d      }|j                  |j                  dd             |j                          y y )Nr  zdialog-cancel)z7/usr/share/icons/oxygen/16x16/actions/dialog-cancel.pngz@/usr/lib/kde4/share/icons/oxygen/16x16/actions/dialog-cancel.pngz4/usr/share/icons/crystalsvg/16x16/actions/cancel.pngro     )r  r  r   rl   rA   	setPixmapr@   r   )rF   r   r  
cancelIcons       r,   abortzDistUpgradeViewKDE.abort  se    ~~D,,^djj-HIE*bcJ OOJ--b"56JJL r.   c                    t         t        |   |       t        dg d      }t        dg d      }| j                  rt        | j                  d| j                  j                  z        }t        | j                  d| j                  j                  z        }|j                  |j                  dd             |j                          || _        t        | j                  d|j                  z        }t        | j                  d|j                  z        }|j                  |j                  dd             |j                          |j                  d	|j                         z   d
z          y )Nz	dialog-ok)z3/usr/share/icons/oxygen/16x16/actions/dialog-ok.pngz</usr/lib/kde4/share/icons/oxygen/16x16/actions/dialog-ok.pngz0/usr/share/icons/crystalsvg/16x16/actions/ok.pngro  zarrow-right)z5/usr/share/icons/oxygen/16x16/actions/arrow-right.pngz>/usr/lib/kde4/share/icons/oxygen/16x16/actions/arrow-right.pngz9/usr/share/icons/crystalsvg/16x16/actions/1rightarrow.pngr  r  r  z<b>z</b>)r   ra  setSteprA   r  r  r   rl   r  r@   r   r   r   )rF   r   okIcon	arrowIconr  r  r   s         r,   r  zDistUpgradeViewKDE.setStep  s!    406{"VW -%bc	
 >>D,,^dnn>R>R-RSED,,^dnn>R>R-RSEOOFMM"b12JJL(($**)DE(($**)DE	((R01

eejjl*V34r.   c                 @   d|d|}t        | j                        }t        d|       | j                  |       |j                  j                  |       |d k7  r6|j                  j                  |       |j                  j                          n|j                  j                          |j                  t        d             t        dg d      }|j                  j                  |j                  dd             |j                          |j!                          y )	Nr  r  r  Informationzdialog-information)z;/usr/share/icons/oxygen/48x48/status/dialog-information.pngzD/usr/lib/kde4/share/icons/oxygen/48x48/status/dialog-information.pngz=/usr/share/icons/crystalsvg/32x32/actions/messagebox_info.pngro  0   )r   r   r3   r  r  r   r  r   r  r  r   rA   r  r  r@   rG   r  rF   r  r   extended_msgr  r  s         r,   informationzDistUpgradeViewKDE.information  s    07<4++, (+&&x0$$S)4##++L9##((*##((*- 010'hi 	  !3!3B!;<r.   c                    d|d|}t        | j                        }t        d|       | j                  |       |j                  j                  |       |d k7  r6|j                  j                  |       |j                  j                          n|j                  j                          t        dg d      }|j                  j                  |j                  dd             |j                          |j                          y)	Nr  r  r  zdialog-error)z5/usr/share/icons/oxygen/48x48/status/dialog-error.pngz>/usr/lib/kde4/share/icons/oxygen/48x48/status/dialog-error.pngzA/usr/share/icons/crystalsvg/32x32/actions/messagebox_critical.pngro  r  F)r   r   r3   r  r  r   r  r   r  rA   r  r  r@   rG   r  r  s         r,   r   zDistUpgradeViewKDE.error/  s    .5s;4++, (+&&x0$$S)4##++L9##((*##((*N'lm 	  !3!3B!;<r.   c           
         t        j                  | ||||       t        | j                        | _        t        d| j                         | j                  j                  j                          | j                  j                  j                  j                  | j                         | j                  | j                         | j                  j                  j                  t        j                        j!                  t#        d             | j                  j                  j                  t        j$                        j'                  t)                      | j                  j                  j                  t        j$                        j!                  t#        d      dz          t+        dg d      }| j                  j,                  j/                  |j1                  dd             |d	k7  r|d
   j3                  dd      }| j                  j                  j                  t        j4                        j!                  |       |d   j3                  dd      }	| j                  j                  j                  t        j                        j!                  |	       d|z  }
| j                  j6                  j!                  |
       | j                  j8                  j!                  | j:                         | j                  j                  j=                          | j                  j                  j?                  dg       | j                  j                  jA                         j                          | jB                  D ]]  }| j                  j                  jE                  d
tG        | j                  j                  t#        d      |jH                  z  g             _ | jJ                  D ]]  }| j                  j                  jE                  d
tG        | j                  j                  t#        d      |jH                  z  g             _ | jL                  D ]]  }| j                  j                  jE                  d
tG        | j                  j                  t#        d      |jH                  z  g             _ | jN                  D ]]  }| j                  j                  jE                  d
tG        | j                  j                  t#        d      |jH                  z  g             _ | jP                  D ]]  }| j                  j                  jE                  d
tG        | j                  j                  t#        d      |jH                  z  g             _ | j                  jS                          | j                  jU                         }|t        jV                  k(  ryy)zshow the changes dialoguezdialog_changes.uiz&Start UpgradeDetails >>>zdialog-warning)z7/usr/share/icons/oxygen/48x48/status/dialog-warning.pngz@/usr/lib/kde4/share/icons/oxygen/48x48/status/dialog-warning.pngz@/usr/share/icons/crystalsvg/32x32/actions/messagebox_warning.pngro  r  Nr   r   ry   r   z<big><b>%s</b></big>PackageszNo longer supported %sz	Remove %szRemove (was auto installed) %sz
Install %sz
Upgrade %sTF),r   confirmChangesr   r   changesDialoguer3   treeview_detailsr  	buttonBoxhelpRequestedr'  showChangesDialogueDetailsr  buttonr   r   r   r   HelpsetIconr   rA   question_pixmapr  r@   r  r   label_summarylabel_changesconfirmChangesMessageclearsetHeaderLabelsheader	demotionsinsertTopLevelItemr   r>   toRemovetoRemoveAuto	toInstall	toUpgraderG   r  r-  )rF   r  changesr  downloadSizeactionsremoval_boldr  cancelconfirmsummaryTextdemotedrminstuprR  s                   r,   r  z!DistUpgradeViewKDE.confirmChangesG  sU   
 	&&tWgy'3	5&t'7'78"D$8$89--224&&44<<T=\=\]&&t';';<&&--.>.A.ABJJ1M]K^_&&--.>.C.CDLLUWU&&--.>.C.CDLLQy\\bMbc,'kl 	,,66{7I7I"b7QRd?QZ''R0F  **112B2I2IJRRSYZaj((b1G  **112B2E2EFNNwW,w6**22;?**2243M3MN--335--==zlK--446;;=~~ 	oG  11DDQX\XlXlX}X}  AB  C[  A\  _f  _k  _k  Ak  @l  Im  o	o-- 	]B  11DDQX\XlXlX}X}  AB  CN  AO  RT  RY  RY  AY  @Z  I[  ]	]## 	rB  11DDQX\XlXlX}X}  AB  Cc  Ad  gi  gn  gn  An  @o  Ip  r	rNN 	`D  11DDQX\XlXlX}X}  AB  CO  AP  SW  S\  S\  A\  @]  I^  `	`.. 	^B  11DDQX\XlXlX}X}  AB  CO  AP  SU  SZ  SZ  AZ  @[  I\  ^	^ 	'') ""((*'"""r.   c                 J   | j                   j                  j                         rs| j                   j                  j                          | j                   j                  j                  t        j                        j                  t        d      dz          nr| j                   j                  j                          | j                   j                  j                  t        j                        j                  dt        d      z          | j                   j                          y )Nr  r  z<<< )r  r  r7  r  r  r  r   r  r   r   r   rG   rE   s    r,   r  z-DistUpgradeViewKDE.showChangesDialogueDetails  s    00::<  11668  **112B2G2GHPPQRS\Q]`fQfg  11668  **112B2G2GHPPQWZ[\eZfQfg'')r.   c                     t        j                  | j                  |d|z   t         j                  t         j                  z  t         j                        }|t         j                  k(  ryy)Nz<font>TF)r   r   r   YesNo)rF   r  r   defaultanswers        r,   askYesNoQuestionz#DistUpgradeViewKDE.askYesNoQuestion  sS    %%d&6&6CQ\Q`Q`alaoaoQoq|qq  A[__$r.   c                    t        t         j                  ||t         j                  | j                        }|j	                  t         j
                        }|j	                  t         j                        }|j                  t        d             |dk(  r|j                  |       n|j                  |       |2|j                         }|j                  |t        j                  z         |j                         }|t         j
                  k(  ryy)NContinuer   TF)r   WarningNoButtonr   	addButtonApplyr   r   r   setDefaultButtonwindowFlagssetWindowFlagsr   FramelessWindowHintr  )	rF   r  r   r  
messageBoxcontinueButtoncancelButtonflagsr	  s	            r,   askCancelContinueQuestionz,DistUpgradeViewKDE.askCancelContinueQuestion  s     !4!4gsKDXDXZ^ZjZjk
#--k.?.?@!++K,>,>?q}-h''5''7?**,E%%eb.D.D&DE!!#[&&&r.   c                    t        t         j                  t        d      t        d      t         j                  | j                        }|j                  t         j                        }|j                  t         j                        }|j                  t        d      j                  dd             |j                  t        j                  dd             |j                         }|t         j                  k(  ryy	)
NzRestart requiredz<<b><big>Restart the system to complete the upgrade</big></b>z_Restart Nowr   r  r  r  TF)r   Questionr   r  r   r  r  r  r   r  r"   r  r  )rF   r  	yesButtonnoButtonr	  s        r,   confirmRestartz!DistUpgradeViewKDE.confirmRestart  s     !5!5q9K7La  QO  OP  R]  Rf  Rf  hl  hx  hx  y
((9	''7!N+33C=>)))X>?!!#[__$r.   c                 ,    t        j                          y r8   )r   r   rE   s    r,   r   z DistUpgradeViewKDE.processEvents  s    ""$r.   c                      y r8   ru   )rF   r  s     r,   pulseProgressz DistUpgradeViewKDE.pulseProgress  s     	r.   c                     t        d      }|j                  dd      }t        j                  | j                  t        d      |t        j
                  t        j                        }|t        j
                  k(  ryy)Nz<b><big>Cancel the running upgrade?</big></b>

The system could be in an unusable state if you cancel the upgrade. You are strongly advised to resume the upgrade.r  z<br />zCancel Upgrade?TF)r   r  r   rJ  r   r  r  )rF   r   r  s      r,   r[  z.DistUpgradeViewKDE.on_window_main_delete_event  si     w x ||D(+$$T%5%5q9J7KTS^SbSbdodrdrs[__$r.   )NNr8   )NT)r  )r   )F)rq   rr   rs   r   rR   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   s   @r,   ra  ra  2  s    .dL
7J6&%%%#3	52.2 376p*(	%	r.   ra  __main__zinput box testzbar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar z--test-termbashTg{Gz?z--show-in-terminal   g?)purge)strict)jutilsr   ImportErrorPyQt5r   PyQt5.QtCorer   r   r	   r
   r   PyQt5.QtWidgetsr   r   r   r   r   r   r   r   r   r   PyQt5.QtGuir   r   r   r   rd  PyQt4.QtCorePyQt4.QtGuir   r   r   r!  r)  r  aptr   r  rn   r0   r   DistUpgradeApportr   r   r   r   r   r   DistUpgradeConfigParserr    	telemetryr!   ru  r   r"   DistUpgradeGettextr   r#   r$   r-   r3   r9   rA   rG   rD   rI   rw   r   baseCdromProgressr   
OpProgressr   r   r   rU  ra  rq   viewr
  argvrG  r   rQ  callr  r   r   rM  r_   rd   r   charsr   r   Cacher  r  is_installedis_upgradablemark_deletemark_installcommitr  r  ru   r.   r,   <module>rB     sZ  .?  zXKK   ED       
    	 
 7 ^ ^ 6 +   , / "1
  "" !++  1 1hH9 HVcll//== *)CLL%%00 ),2 2jE ET $M M` z		$(  *`  aXXa[M!##%c	
*//6(
#
#((*



-
-
/
$,
$
$
&
$**T
 
 	XXa[(( &&(% !



0
0!
5
$,
$
$
&
$**T
	
 
$,
$
$
&  #))+%XXab\  cSzuSz'?'?Cj4(Cj	 
 ,,t$$T%:%:; 	 l  " 	G u  ?KK? ? ? ? ??T s   A
M$ N$$9N! N!$N.