
    f¤                     H   	 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 n?# e$ r7 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 nw xY w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; d2d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$jD        jE        jF                  ZG G d de$jD        jE        jH                  ZI G d d e0          ZJ G d! d"e/          ZK G d# d$e          ZL G d% d&e-          ZMeNd'k    r eM            ZOeOP                    d(d)           ejQ        d          d*k    ryeOjR        S                                ZTeTdk    r  e"jU        d+g            ejV                     	 eOjR        W                                  ejX                      e!jY        d-           9ejQ        d          d.k    r eZejQ        d/                   5 Z[e[\                                Z]d	d	d	           n# 1 swxY w Y   e]D ];Z^eOjR        _                    e^            ejX                      e!jY        d0           <	  ejX                      e$j`                    ZaejQ        d d	         D ]SZbeaeb         jc        r*eaeb         jd        seaeb         e                    d,1           9eaeb         f                                 Teag                    eOjh        eOji                   	  ejX                     d	S )3   )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)
QUrlOpenerstrictc                 \    t          | t                    r|                     d|          S | S )NUTF-8)
isinstancebytesdecode)serrorss     Q/home/let_prod/public_html/lightetech2/upgrader/DistUpgrade/DistUpgradeViewKDE.pyutf8r.   M   s-    !U xx(((    c                     t           j                            |           rt          j        | |           d S t          d| z              d S )Nzerror, can't find file: )ospathexistsr   loadUiprint)fileparents     r-   r4   r4   T   sL    	w~~d 1
4      	(4/00000r/   c                 b    t           j                            |           rt          |           S d S N)r1   r2   r3   r   )r2   s    r-   _find_pixmapr:   [   s)    	w~~d t}}4r/   c                     t          t                    t          k    rt          j        |           S |D ]$}t          |          }|rt          |          c S %d S r9   )typer
   intr   	fromThemer:   )name	fallbacksr2   pixmaps       r-   _iconrB   `   se    LS  t$$$ 	% 	%D!$''F %V}}$$$%4r/   c                 \    |                                  s|                     |            d S d S r9   )isMaximizedorigAdjustSizeselfs    r-   
adjustSizerH   q   s:     "D!!!!!" "r/   c                   6    e Zd ZdZdZd	dZd Zd Zd Zd Z	dS )

_OSReleasez/etc/os-releaseTc                     i | _         d| _        t          j        | _        t
          j                            | j                  sd S |                                  d| _        |r| 	                                 d S d S )NFT)
resultvalidrJ   OS_RELEASE_FILEr6   r1   r2   isfileparseinject_lsb_compat)rG   
lsb_compats     r-   __init__z_OSRelease.__init__{   su    
.	w~~di(( 	F


 	%""$$$$$	% 	%r/   c                 @   | j         d         | j         d<   | j         d         | j         d<   | j                             d          | j         d<   | j         d         s"| j                             d          | j         d<   | j                             d          | j         d	<   d S )
NIDzDistributor IDPRETTY_NAMEDescriptionVERSION_CODENAMECodenameUBUNTU_CODENAME
VERSION_IDRelease)rL   r!   rF   s    r-   rQ   z_OSRelease.inject_lsb_compat   s    (,D(9$%%)[%?M""&+//2D"E"EJ{:& 	I&*koo6G&H&HDK
#!%!>!>Ir/   c                     t          | j        d          }|D ]7}|                                }|s | j        |                    dd            8|                                 d S )Nr=r   )openr6   stripparse_entrysplitclose)rG   flines      r-   rP   z_OSRelease.parse   sl    C   	2 	2D::<<D Ddjja00111						r/   c                     |                      |          }|dk    r*t          |t                    r|                    d          }|| j        |<   d S )NID_LIKE )parse_valuer(   strrc   rL   )rG   keyvalues      r-   rb   z_OSRelease.parse_entry   sT      '')
5# 6 6 KK$$E Cr/   c                 d    t          j        |          }t          |          dk    r|d         S |S )Nr   r   )shlexrc   len)rG   rm   valuess      r-   rj   z_OSRelease.parse_value   s1    U##v;;!!9r/   N)T)
__name__
__module____qualname__DEFAULT_OS_RELEASE_FILErN   rS   rQ   rP   rb   rj    r/   r-   rJ   rJ   w   so        /'O% % % %? ? ?  ! ! !    r/   rJ   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	DumbTerminalz A very dumb terminal c                 4   t          j        | d|           || _        |                     d           |                     d           |                     t          j                   |                     d           | 	                    d           d| _
        dS )z2 really dumb terminal with simple editing support  	Monospace   FTN)r   rS   installProgresssetFontFamilysetFontPointSizesetWordWrapModer   NoWrapsetUndoRedoEnabledsetOverwriteMode_block)rG   r}   parent_frames      r-   rS   zDumbTerminal.__init__   s    4\222.;'''a   [/00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_fdr1   environrF   s    r-   r   zDumbTerminal.fork   s;    ;>8::8-7>Q!'BJv~r/   c                     t          j         | j        j        gg g d          \  }}}t          |          dk    rAt	          j        | j        j        d          }|                     t          |                     t          j	                     d S )Nr      )
selectr}   r   rp   r1   readinsertWithTermCodesr.   r   processEvents)rG   rlistwlistxlistrf   s        r-   update_interfacezDumbTerminal.update_interface   s~     &t/C/M.NrRTVW X Xuu::>>74/93??D$$T$ZZ000"$$$$$r/   c                 :   d}|D ]}t          |          dk    r>|                     |           |                                                                  d}S|t	          d          k    rg|t	          d          k    r{||z  }|                     |           dS )z support basic terminal codes rz   r|         N)ordinsertPlainText
textCursordeletePreviousCharchr)rG   textdisplay_textcs       r-   r   z DumbTerminal.insertWithTermCodes   s     	" 	"A1vv{{$$\222!!44666c"ggc!ff!\*****r/   c                    t          | j        d          sdS |                                t          j        k    r.t          j        | j        j        t          d                     dS |	                                sdS t          j        | j        j        |	                                
                    d                     dS )z$ send (ascii) key events to the pty r   Nr|   zutf-8)hasattrr}   rl   r   Key_Backspacer1   writer   r   r   encode)rG   evs     r-   keyPressEventzDumbTerminal.keyPressEvent   s     t+[99 	F6688r'''HT)3SVV<<<Fwwyy 	F
%/1A1A'1J1JKKKKKr/   c                 r    | j         rdS d| _         |                     t          j                   d| _         dS )z: helper that ensures that the cursor is always at the end NTF)r   
moveCursorr   EndrF   s    r-   onCursorPositionChangedz$DumbTerminal.onCursorPositionChanged   s7    ; 	F(((r/   N)
rr   rs   rt   __doc__rS   r   r   r   r   r   rv   r/   r-   rx   rx      sw          
 
 
  % % %+ + +&L L L     r/   rx   c                   *    e Zd ZdZd Zd Zd Zd ZdS )KDECdromProgressAdapterz Report the cdrom add progress c                 X    |j         j        | _        |j         j        | _        || _        d S r9   )window_mainlabel_statusstatusprogressbar_cacheprogressbarr7   rG   r7   s     r-   rS   z KDECdromProgressAdapter.__init__   s(    (5!-?r/   c                     |r| j                             |           | j                            t	          |j        t          | j                  z                       t          j	                     dS )z; update is called regularly so that the gui can be redrawn N)
r   setTextr   setValuer=   rm   float
totalStepsr   r   )rG   r   steps      r-   updatezKDECdromProgressAdapter.update   se     	$
+

d
#
#
#!!#djt1G1G&G"H"HIII"$$$$$r/   c                     dS )N)Frz   rv   rF   s    r-   ask_cdrom_namez&KDECdromProgressAdapter.ask_cdrom_name  s    {r/   c                     dS )NFrv   rF   s    r-   change_cdromz$KDECdromProgressAdapter.change_cdrom  s    ur/   N)rr   rs   rt   r   rS   r   r   r   rv   r/   r-   r   r      sV        ))  
% % %      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                 "    || _         || _        d S r9   )r   progressbar_label)rG   r   r   s      r-   rS   zKDEOpProgress.__init__  s    $d0dr/   Nc                     t          t          |                               |           | j                            t          | j                             t          j                     d S r9   )	superr   r   r   r   r=   percentr   r   )rG   r   	__class__s     r-   r   zKDEOpProgress.update  sY    M4  ''000 DL 1 1222 """""r/   c                 :    | j                             d           d S Nrz   )r   r   rF   s    r-   donezKDEOpProgress.done  s    
$$R(((((r/   r9   )rr   rs   rt   r   rS   r   r   __classcell__r   s   @r-   r   r     sa        %%1 1 1# # # # # #) ) ) ) ) ) )r/   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )KDEAcquireProgressAdapterz? methods for updating the progress bar while fetching packages c                     t          j        |            |j        j        | _        |j        j        | _        || _        d S r9   )r   rS   r   r   r   r   progressr7   r   s     r-   rS   z"KDEAcquireProgressAdapter.__init__&  s8     &&&(5*<r/   c                     t          d          ||fz  }t          j        | j        j        t          d          |t          j        t          j                  }|t          j        k    rdS dS )Nz&Please insert '%s' into the drive '%s'zMedia ChangeTF)_r   questionr7   r   OkCancel)rG   mediumdrivemsgchanges        r-   media_changez&KDEAcquireProgressAdapter.media_change-  s^    6776%.Hc#DK$;Q~=N=NPSU`Ucepewxxf	;>	!	!tUr/   c                     t          j        |            | j                            d           | j                                         d S )Nr   )r   startr   r   r   showrF   s    r-   r   zKDEAcquireProgressAdapter.start4  sC    d###q!!!r/   c                     | j         j        j                            d           | j                            t          d                     d S )N  zFetching is complete)r7   r   progress_textr   r   r   rF   s    r-   stopzKDEAcquireProgressAdapter.stop:  sC    -55d;;;A45566666r/   c                 L   t          j        | |           | j                            t	          | j                             | j        dz   }|| j        k    r| j        }| j        dk    rt          j
        | j                  }t          |t                    r&|                    t          j                              }| j                            t%          d          || j        |fz             | j        j        j                            dt%          d          t-          | j                  z  z   dz              nU| j                            t%          d          || j        fz             | j        j        j                            d           t1          j                     d	S )
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   r7   r   r   r   etar   r   )rG   ownercurrent_itemr   s       r-   r   zKDEAcquireProgressAdapter.pulse>  s{    	dE***s4<00111)A-$***+La!-d.>??K+u-- P)001L1N1NOOK"E F F,X\XhjuIv vwwwK#199%!DXBYBY\jkoks\t\tBt:tw}:}~~~~K"< = =tO_@` `aaaK#199$???"$$$tr/   N)	rr   rs   rt   r   rS   r   r   r   r   rv   r/   r-   r   r   !  se        II      7 7 7    r/   r   c                   R    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dS )KDEInstallProgressAdapterz?methods for updating the progress bar while installing packages   c                    t          j        |            d | _        |j        j        | _        |j        j        | _        |j        j        | _        || _        	 t          dd          | _
        nf# t          $ rY}t          j        d|z             t          j        dk    rt          j        j        | _
        nt          j        | _
        Y d }~nd }~ww xY wt$          j                            dd           d S )Nz/var/log/dist-upgrade/term.logwbzCan not open terminal log: '%s'3zDPkg::StopOnErrorFalse)r   rS   _cacher   r   r   r   r   r7   r`   _terminal_log	Exceptionloggingerrorsysversionstdoutbufferr   configset)rG   r7   es      r-   rS   z"KDEInstallProgressAdapter.__init__\  s     &&&".;*<#/=	0!%&Ft!L!LD 	0 	0 	0M;a?@@@{c!!%(Z%6""%(Z"	0 	.w77777s   A- -
C7ACCc                 d   t          j        |            d| _        | j                            t          d                     | j                            d           | j                            d           d| _	        d| _
        d| _        | j        j        j                            d           d S )NFzApplying changesr   ri           T)r   start_updatefinishedr   r   r   r   r   r   
start_timetime_uilast_activityr7   r   showTerminalButton
setEnabledrF   s    r-   r  z&KDEInstallProgressAdapter.start_updateo  s    $T*** 	!!!$6"7"7888q!!!""3''' 2==dCCCCCr/   c                    t          j        | ||           t          j        d|d|d           t          j        dd          |v rdS t          d          |z  }t          d          |z  }d	|d
|}t          | j        j                  }t          d|           | j        
                    |           |j                            |           |d k    r4|j                            |           |j                                         n|j                                         |                                 |                                 d S )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   r7   r   r4   translate_widget_childrenlabel_errorr   textview_errorr   hiderH   exec_)rG   pkgerrormsgsummaryr   dialogues         r-   r   zKDEInstallProgressAdapter.error~  s_   dC222ccc888TUUUF$PQQU]]],--3 ' ( (*-. 18=4;233 (+++--h777$$S)))t#++H55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                   t"          j                            |          s|dz   }t"          j                            d          rtdd	||g}t)          j        |t(          j        
                                          d         }|                    dd          }| j        j        
                    |           n,| j        j        
                    t          d                     | j                                        }	| xj        t          j                    |z
  z  c_        |	t          j        k    rt#          j        | j        d           dS t#          j        | j        d           dS )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   r7   r   confDialoguer4   label_conffiler   textview_conffiler  show_difference_buttonclickedconnectshowConffiler1   r2   r3   
subprocessPopenPIPEcommunicater*   r  r  Acceptedr   r   )
rG   currentnewr   primsecmarkupcmddiffrL   s
             r-   conffilez"KDEInstallProgressAdapter.conffile  s   FPQQQ	CDDwN # $ $ OSddTWTWX#DK$;<<#T%6777(00888+00222 	08@@ARSSS w~~g&& 	)L(' 7>>/** 	] $5#!#jo>>>JJLLQO$Wi00$


-
5
5d
;
;
;
;


-
5
5a8Z6[6[
\
\
\"((**	e++W%%%HT^V,,,,,HT^V,,,,,r/   c                 n   | j         j                                        rL| j         j                                         | j         j                            t          d                     d S | j         j                                         | j         j                            t          d                     d S )NzShow Difference >>>z<<< Hide Difference)r#  r%  	isVisibler  r&  r   r   r   rF   s    r-   r)  z&KDEInstallProgressAdapter.showConffile  s    .88:: 	W/446664<<Q?T=U=UVVVVV/446664<<Q?T=U=UVVVVVr/   c                 @   t          j                    \  | _        | _        | j        dk    rQd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   r1   r   r   r!  rF   s    r-   r   zKDEInstallProgressAdapter.fork  s    +.8::(>Q!'BJv!33
,-660@
,-5;BJ12(4>9:::~r/   c                    | j         dk    rt          j                    | _         | j                            t	          | j                             | j                            t          |	                                                     |dk    rt          j                    | _
        d| _        | j
        | j         z
  }|| j        z  }t          |          |z  }d| j        z
  |z  }|dk    r?|dk     r9| j                            t          d          t!          |          z             d	S | j                            d           d	S d	S )
zupdate progress bar and labelr  g      ?Fg      Y@g     N@i  r   ri   N)r
  r"  r   r   r=   r   r   r   r.   ra   r  activity_timeout_reportedr  r   r   r   r   )rG   r  r   r   deltatime_per_percentr   s          r-   status_changez'KDEInstallProgressAdapter.status_change  s-    ?c!! IKK$/s4<00111!!$v||~~"6"6777S==#y{{$
+0$
($t6%
4<
%#Ell72
%)99#4ZZC:..&&q)='>'>PSATAT'TUUUUU&&s+++++ =r/   c                 :    | j                             d           d S r   )r   r   rF   s    r-   finish_updatez'KDEInstallProgressAdapter.finish_update  s    !!"%%%%%r/   c                 8   	 	 t          j         | j        gg g d          \  }}}t          |          dk    rct          j        | j        d          }| j                            |           | j        j        	                    t          |d                     nn?n=# t          $ r0}t          |           t          j        d|z             Y d}~n	d}~ww xY w	 t          j        |            n># t"          $ r1}t          j        d| j        d	|d
           d| _        Y d}~nd}~ww xY w| j        dk    r| j        | j        z   t+          j                    k     r| j        sl	 t          j        d| j        d| j                                        d
           n,# t4          $ r t          j        d| j        z             Y nw xY wd| _        | j        j        j                                         t=          j                     t+          j         d           dS )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' ()rz   zno activity on terminal for z
 seconds (z&no activity on terminal for %s secondsg{Gz?)!r   r   rp   r1   r   r   r   r7   terminal_textr   r.   r   r5   r   r!  r   r   
ValueErrorr   r  TIMEOUT_TERMINAL_ACTIVITYr"  r@  warningr   r   UnicodeEncodeErrorr   konsole_framer   r   r   sleep)rG   r   r   r   rf   r  s         r-   r   z*KDEInstallProgressAdapter.update_interface  s   	(.t~6Fr"a(P(P%uu::>>74>377D&,,T222K-AAT)4446 6 6 6 6    aFJKKK	 	

*4
0
0
0
0 	 	 	
--fjfofofoqrqrqrs
t
t
t$))))))	
 !!!??49;;NN/ 2mQUQoQoQoqu  rC  rH  rH  rJ  rJ  rJ  rJ  !K  L  L  L  L% m m m HDLj klllllm-1D*
+
!
/
4
4
6
6
6"$$$
4sB   BB 
C&&CCC0 0
D+:'D&&D+%7F &GGc                     	 |                                   t          j        | j        t          j                  \  }}|| j        k    rnH|S r9   )r   r1   waitpidr   WNOHANG)rG   pidress      r-   
wait_childz$KDEInstallProgressAdapter.wait_child  sN    	!!###DN2:>>JS#dn$$		 
r/   N)rr   rs   rt   r   rJ  rS   r  r   r6  r)  r   rC  rE  r   rT  rv   r/   r-   r   r   V  s        II !$8 8 8&D D D  2#- #- #-JW W W
 
 
, , ,.& & &( ( (T    r/   r   c                        e Zd Zd Zd Zd ZdS )UpgraderMainWindowc                 N    t          j        |            t          d|            d S )Nzwindow_main.ui)r   rS   r4   rF   s    r-   rS   zUpgraderMainWindow.__init__"  s*    &&&&&r/   c                     || _         d S r9   )r7   )rG   	parentRefs     r-   	setParentzUpgraderMainWindow.setParent'  s    r/   c                     | j                                         }|r|                                 d S |                                 d S r9   )r7   on_window_main_delete_eventacceptignore)rG   eventrd   s      r-   
closeEventzUpgraderMainWindow.closeEvent*  s?    7799 	LLNNNNNLLNNNNNr/   N)rr   rs   rt   rS   rZ  r`  rv   r/   r-   rV  rV     sA        ' ' '
         r/   rV  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 toolNc                 $   t          j        |            t                                          d           t	          j        d          }|                    t          j                   |r|dk    rWt          j	        
                    t          j                    d          }t          t          j                              | _        nd}t          |          | _        	 t          j        d|           t          j        d           n.# t"          $ r!}t	          j        d|z             Y d }~nd }~ww xY w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*|                    t7          j                    ddd           n)|                    t7          j                    ddd           | j                            |           t=                                                       tA          dddg          }| j        !                    |           tE                      | _#        | j#        $                    |            | j#        %                                 d | _&        tO          | j#        j(        | j#        j)                  | _*        tW          |           | _,        t[          |           | _.        t_          |           | _0        | j1        td          _3        | j#        j4        5                    d           | j#        j4        j6        7                    | j8                   t          j        d|           t          j        d           | 9                                 tu                      j;        d         }|r|dk    rd}| j        <                    dd          }	t{          j>                    ?                    |	          }
| j#        j@        A                                }|B                    d|          }|B                    d|
          }| j#        j@        C                    |           | j#        jD        E                                 t          | j#        jD                  | _G        | j#        jD        H                    d d!           t          | j0        | j#        jD                  | _J        | jG        K                    | jJ                   | jJ        %                                 t          jM        d"| jN                   | j        O                                 d S )#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@   FrV   UbuntuKubuntuSourcesToz%siX  i  
   )Pr   rS   get_telemetryset_updater_typer   	getLoggersetLevelINFOr1   r2   joingetcwdr    r  r"   bindtextdomain
textdomainr   rK  r   r   appr	   r<   r
   r=   loadr   systeminstallTranslatorr$   setupUrlHandlesrB   setWindowIconrV  r   rZ  r   	prev_stepr   r   r   _opCacheProgressr   _acquireProgressr   _cdromProgressr   _installProgress_handleExceptionr   
excepthookr  r  r'  r(  showTerminalr  rJ   rL   r!   distro_infoUbuntuDistroInfor   label_titler   r   r   rM  r  r   konsole_frame_layoutsetMinimumSizerx   rH  	addWidgetr   
singleShotexitMainLoopMidFlightr  )rG   datadirlogdirlogger	localedirr  
translatormessageIconr?   to_dist
to_versiontitle_strings               r-   rS   zDistUpgradeViewKDE.__init__4  s    &&&((///"7++%%% 	3'S..GLLT22))")++66$++?))'22$+	<

 !:I
F
F
F

6
7
7
7
7 	< 	< 	<
/6:
;
;
;
;
;
;
;
;	<
 BJ&&<=== ,1
'( *0
%& -0
()-2
)*!: ;<< !**
$$OOGN,,dC9VWWWWOOGN,,dC9VWWW"":...$$&&&4'f'^'`a a a 	{+++-//""4((( -d.>.PRVRbRp q q 9$ ? ?5d;; 9$ ? ? .+66u===+3;;D<MNNN 	8CCC4555&&(((||"=1 	tx''D+//)T22 133;;GDD
'388::#++Hd;;#++D*==$,,\::: 	&++---$/0@0N$O$O!&55c3???)$*?AQA_``!++D,>???!!! 	"d8999s   )D	 	
D4D//D4c                 V    t          d           | j                                         d S )Nr  )r5   r  exitrF   s    r-   r  z(DistUpgradeViewKDE.exitMainLoopMidFlight  s$    %&&&r/   c                 H   |d k    r| j         }t          |t                    st          |t                    rt	          |                                          dk    r)|                    t          j        dd                     nA|                    t          t	          |                                                               |
                                d k    rA|
                                D ].}|                     |           |                     |           -d S d S )NErrorkdelibs)r   r(   r   r   rk   windowTitlesetWindowTitler"   r  r   childrentranslate_widgetr  )rG   parentWidgetwidgets      r-   r  z,DistUpgradeViewKDE.translate_widget_children  s   4+LlG,, 	R
<0Q0Q 	R<++--..'99++W-=i-Q-QRRRR++As<3K3K3M3M/N/N,P,PQQQ  ""d**&//11 7 7%%f---..v6666 +*7 7r/   c                 $   t          |t                    st          |t                    rbt          |                                          dk    rNt          j        dt          j        d          d          }|                    t          |d                     d S t          |                                          dk    rNt          j        dt          j        d          d          }|                    t          |d                     d S t          |                                          dk    rY|                    t          t          |                                                                        dd                     d S d S d S )	Nz&Cancelr  T)fallback&Closerz   r   &)r(   r   r   rk   r   r"   translationr~  r   r#   r   r   )rG   r  r  s      r-   r  z#DistUpgradeViewKDE.translate_widget  sh   ff%% 
	JFK)H)H 
	J6;;==!!Y..!-w1)<<tM M Mw	BBCCCCCV[[]]##x//!-w1)<<tM M MwAABBBBBV[[]]##r))#fkkmm"4"4 5 5 = =c3 G GIIIII
	J 
	J *)r/   c                    t          |t                    st          |t                    rdS t          j        |||          }t          j        dd                    |          z             t          |||           t                      sd                    t          j        |||                    }t          | j                  }t          d|           |                     | j                   |j                            |           |                                 |                                 t'          j        d           dS )zCrash handler.Nz)not handled exception in KDE frontend:
%s
rz   r  r   )
issubclassKeyboardInterrupt
SystemExit	tracebackformat_exceptionr   r   r{  r   r   r   r   r4   r  dialogcrash_detailr   rH   r  r   r  )rG   exctypeexcvalueexctblinestbtextr  s          r-   r  z#DistUpgradeViewKDE._handleException  s$    w 122 	w
++	F *7HeDDBTYYuEUEUUVVV 	Wh...|| 	WWY75QQRRFT-..F$f---**4;777''///LLNNNr/   c                    | j         j                                        rK| j         j                                         | j         j                            t          d                     nJ| j         j                                         | j         j                            t          d                     | j                                          d S )NzShow Terminal >>>z<<< Hide Terminal)	r   rM  r8  r  r  r   r   r   rH   rF   s    r-   r  zDistUpgradeViewKDE.showTerminal  s    )3355 	P*//111/77:M8N8NOOOO*//111/77:M8N8NOOO##%%%%%r/   c                     | j         S r9   )r  rF   s    r-   getAcquireProgressz%DistUpgradeViewKDE.getAcquireProgress      $$r/   c                 (    || j         _        | j         S r9   )r  r   )rG   caches     r-   getInstallProgressz%DistUpgradeViewKDE.getInstallProgress  s    ',$$$r/   c                     | j         S r9   )r  rF   s    r-   getOpCacheProgressz%DistUpgradeViewKDE.getOpCacheProgress  r  r/   c                     | j         S r9   )r  rF   s    r-   getCdromProgressz#DistUpgradeViewKDE.getCdromProgress  s    ""r/   c                 D    | j         j                            |           d S r9   )r   r   r   )rG   r   s     r-   update_statusz DistUpgradeViewKDE.update_status  s"    %--c22222r/   c                     t          | j        d|j        z            }t          | j        d|j        z            }|                                 |                                 d S )Nimage_step%ilabel_step%i)getattrr   rm   r  )rG   r   imagelabels       r-   hideStepzDistUpgradeViewKDE.hideStep  sR    ($*)DEE($*)DEE



r/   c                     | j         }|rot          | j        d|j        z            }t	          dg d          }|                    |                    dd                     |                                 d S d S )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.pngrp     )r  r  r   rm   rB   	setPixmaprA   r   )rG   r   r  
cancelIcons       r-   abortzDistUpgradeViewKDE.abort  s    ~ 	D,^dj-HIIE*b *b *bc c cJ OOJ--b"55666JJLLLLL	 	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            }|                    |	                    dd                     |
                                 || _        t          | j        d|j        z            }t          | j        d|j        z            }|                    |	                    dd                     |
                                 |                    d	|                                z   d
z              d S )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.pngrp  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   rb  setSteprB   r  r  r   rm   r  rA   r   r   r   )rG   r   okIcon	arrowIconr  r  r   s         r-   r  zDistUpgradeViewKDE.setStep  s}    4((00666{"V "V "VW W W -%b %b %bc c c	
 > 	D,^dn>R-RSSED,^dn>R-RSSEOOFMM"b11222JJLLL($*)DEE($*)DEE	((R00111

eejjll*V344444r/   c                 x   d|d|}t          | j                  }t          d|           |                     |           |j                            |           |d k    r4|j                            |           |j                                         n|j                                         |	                    t          d                     t          dg d          }|j                            |                    dd                     |                                 |                                 d S )	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.pngrp  0   )r   r   r4   r  r  r   r  r   r  r  r   rB   r  r  rA   rH   r  rG   r  r   extended_msgr  r  s         r-   informationzDistUpgradeViewKDE.information  sG    07<4+,, (+++&&x000$$S)))4#++L999#((****#((***- 0 01110'h 'h 'hi i i 	  !3!3B!;!;<<<r/   c                 4   d|d|}t          | j                  }t          d|           |                     |           |j                            |           |d k    r4|j                            |           |j                                         n|j                                         t          dg d          }|j
                            |                    dd                     |                                 |                                 dS )	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.pngrp  r  F)r   r   r4   r  r  r   r  r   r  rB   r  r  rA   rH   r  r  s         r-   r   zDistUpgradeViewKDE.error/  s)    .5ggss;4+,, (+++&&x000$$S)))4#++L999#((****#((***N'l 'l 'lm m m 	  !3!3B!;!;<<<ur/   Tc           
      j
   t          j        | ||||           t          | j                  | _        t          d| j                   | j        j                                         | j        j        j	        
                    | j                   |                     | j                   | j        j                            t          j                                      t#          d                     | j        j                            t          j                                      t)                                 | j        j                            t          j                                      t#          d          dz              t+          dg d          }| j        j                            |                    dd                     |d	k    r|d
                             dd          }| j        j                            t          j                                      |           |d                             dd          }	| j        j                            t          j                                      |	           d|z  }
| j        j                            |
           | j        j                            | j                   | j        j                                         | j        j                            dg           | j        j                                                                          | j!        D ]P}| j        j        "                    d
tG          | j        j        t#          d          |j$        z  g                     Q| j%        D ]P}| j        j        "                    d
tG          | j        j        t#          d          |j$        z  g                     Q| j&        D ]P}| j        j        "                    d
tG          | j        j        t#          d          |j$        z  g                     Q| j'        D ]P}| j        j        "                    d
tG          | j        j        t#          d          |j$        z  g                     Q| j(        D ]P}| j        j        "                    d
tG          | j        j        t#          d          |j$        z  g                     Q| j        )                                 | j        *                                }|t          j+        k    rdS dS )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.pngrp  r  Nr   r   rz   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   changesDialoguer4   treeview_detailsr  	buttonBoxhelpRequestedr(  showChangesDialogueDetailsr  buttonr   r   r   r   HelpsetIconr   rB   question_pixmapr  rA   r   r   label_summarylabel_changesconfirmChangesMessageclearsetHeaderLabelsheader	demotionsinsertTopLevelItemr   r?   toRemovetoRemoveAuto	toInstall	toUpgraderH   r  r.  )rG   r  changesr  downloadSizeactionsremoval_boldr  cancelconfirmsummaryTextdemotedrminstuprS  s                   r-   r  z!DistUpgradeViewKDE.confirmChangesG  s   
 	&tWgy'3	5 	5 	5&t'788"D$8999-22444&4<<T=\]]]&&t';<<<&--.>.ABBJJ1M]K^K^___&--.>.CDDLLUWWUUU&--.>.CDDLLQy\\\bMbccc,'k 'k 'kl l l 	,66{7I7I"b7Q7QRRRd??QZ''R00F *112B2IJJRRSYZZZaj((b11G *112B2EFFNNwWWW,w6*22;???*2243MNNN-33555-==zlKKK-4466;;===~ 	o 	oG 1DDQX\XlX}  AB  C[  A\  A\  _f  _k  Ak  @l  Im  Im  o  o  o  o- 	] 	]B 1DDQX\XlX}  AB  CN  AO  AO  RT  RY  AY  @Z  I[  I[  ]  ]  ]  ]# 	r 	rB 1DDQX\XlX}  AB  Cc  Ad  Ad  gi  gn  An  @o  Ip  Ip  r  r  r  rN 	` 	`D 1DDQX\XlX}  AB  CO  AP  AP  SW  S\  A\  @]  I^  I^  `  `  `  `. 	^ 	^B 1DDQX\XlX}  AB  CO  AP  AP  SU  SZ  AZ  @[  I\  I\  ^  ^  ^  ^ 	''))) "((**'"""4ur/   c                    | j         j                                        rk| j         j                                         | j         j                            t          j                                      t          d          dz              nj| j         j        
                                 | j         j                            t          j                                      dt          d          z              | j                                          d S )Nr  r  z<<< )r  r  r8  r  r  r  r   r  r   r   r   rH   rF   s    r-   r  z-DistUpgradeViewKDE.showChangesDialogueDetails  s    0::<< 	h 166888 *112B2GHHPPQRS\Q]Q]`fQfgggg 166888 *112B2GHHPPQWZ[\eZfZfQfggg'')))))r/   Noc                     t          j        | j        |d|z   t           j        t           j        z  t           j                  }|t           j        k    rdS dS )Nz<font>TF)r   r   r   Yesr  )rG   r  r   defaultanswers        r-   askYesNoQuestionz#DistUpgradeViewKDE.askYesNoQuestion  sO    %d&6CQ\Q`alaoQoq|q  A  A[_$$4ur/   r   c                 <   t          t           j        ||t           j        | j                  }|                    t           j                  }|                    t           j                  }|                    t          d                     |dk    r|	                    |           n|	                    |           |6|
                                }|                    |t          j        z             |                                }|t           j        k    rdS dS )NContinuer   TF)r   WarningNoButtonr   	addButtonApplyr   r   r   setDefaultButtonwindowFlagssetWindowFlagsr   FramelessWindowHintr  )	rG   r  r   r	  
messageBoxcontinueButtoncancelButtonflagsr
  s	            r-   askCancelContinueQuestionz,DistUpgradeViewKDE.askCancelContinueQuestion  s     !4gsKDXZ^Zjkk
#--k.?@@!++K,>??q}}---h''5555''777?**,,E%%eb.D&DEEE!!##[&&&4ur/   c                    t          t           j        t          d          t          d          t           j        | j                  }|                    t           j                  }|                    t           j                  }|                    t          d          	                    dd                     |                    t          j        dd                     |                                }|t           j        k    rdS d	S )
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  )rG   r  	yesButtonnoButtonr
  s        r-   confirmRestartz!DistUpgradeViewKDE.confirmRestart  s     !5q9K7L7La  QO  OP  OP  R]  Rf  hl  hx  y  y
((99	''77!N++33C==>>>))X>>???!!##[_$$4ur/   c                 ,    t          j                     d S r9   )r   r   rF   s    r-   r   z DistUpgradeViewKDE.processEvents  s    "$$$$$r/   Fc                     d S r9   rv   )rG   r	  s     r-   pulseProgressz DistUpgradeViewKDE.pulseProgress  s	     	r/   c                     t          d          }|                    dd          }t          j        | j        t          d          |t          j        t          j                  }|t          j        k    rdS dS )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   rK  r   r  r  )rG   r   r  s      r-   r\  z.DistUpgradeViewKDE.on_window_main_delete_event  sq     w x x ||D(++$T%5q9J7K7KTS^Sbdodrss[_$$4ur/   )NNr9   )NT)r  )r   )F)rr   rs   rt   r   rS   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-   rb  rb  2  s       ..d d d dL  
7 7 7 7J J J  6& & &% % %% % %% % %# # #3 3 3  	 	 	5 5 5 5 52   .   2 376 6 6 6p* * *      (	 	 	% % %   	 	 	 	 	 	 	r/   rb  __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)r%   )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   re  PyQt4.QtCorePyQt4.QtGuir   r   r   r"  r*  r  aptr   r  ro   r1   r   DistUpgradeApportr   r   r   r   r   r   DistUpgradeConfigParserr    	telemetryr!   rv  r   r"   DistUpgradeGettextr   r#   r$   r.   r4   r:   rB   rH   rE   rJ   rx   r   baseCdromProgressr   
OpProgressr   r   r   rV  rb  rr   viewr  argvrH  r   rR  callr  r   r   rN  r`   re   r   charsr   r   Cacher  r  is_installedis_upgradablemark_deletemark_installcommitr  r  rv   r/   r-   <module>rB     s  .?  xzzXKKKKKKKKKKKKKK                        EDDDDDDDDDDDD ? ? ?KKKKKKKKKKKKKK? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 


            



       				 



 7 7 7 7 7 7 7 7 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 6 6 6 6 6 6 + + + + + +   , , , , , , / / / / / / " " " " " "   1 1 1  
     "" " " !+  1 1 1 1 1 1 1 1hH H H H H9 H H HV    cl/=   *) ) ) ) )CL%0 ) ) ),2 2 2 2 2 2 2 2jE E E E E E E ET       $M M M M M M M M` z				$(  *`  a  a  aXa[M!!##%%c	
*/6(
#
#
#
#(***


-
-
/
/
/
$,
$
&
&
&
$*T



 	Xa[(((4 &&((%                !


0
0!
5
5
5
$,
$
&
&
&
$*T



'
$,
$
&
&
&' #)++%Xabb\    cSz  uSz'?  Cj4((((Cj,,t$T%:;;;# l """#G s$   AA 9BBJ%%J),J)