3
^K@                 @   s  d dl mZmZ d dlZejdd d dlmZ d dlmZ d dlmZ d dl	Z	e	j
dd	e 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 d
dlmZ d dlmZ d dlmZ G dd deZG dd deejZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd de"Z$G dd  d eZ%G d!d" d"eZ&G d#d$ d$eZ'G d%d& d&e'Z(G d'd( d(eZ)dS ))    )absolute_importprint_functionNGtkz3.0)r   )Gdk)GioignorezAccessed deprecated property   )LivePatchSocket)get_dist)gettext)ngettextc               @   s6   e Zd Zdd Zdd Zdd Zdd Zdd
dZd	S )Dialogc             C   s
   || _ d S )N)window_main)selfr    r   7/usr/lib/python3/dist-packages/UpdateManager/Dialogs.py__init__2   s    zDialog.__init__c             C   s   d S )Nr   )r   r   r   r   start5   s    zDialog.startc             C   s   | j  S )N)stop)r   r   r   r   close8   s    zDialog.closec             C   s   d S )Nr   )r   r   r   r   r   ;   s    zDialog.stopNc             C   s   d S )Nr   )r   parentr   r   r   run>   s    z
Dialog.run)N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   1   s
   r   c               @   s(   e Zd Zdd Zd	ddZd
ddZdS )BuilderDialogc             C   s@   t j| | tjj|  | j||}| j|j| | j  d S )N)r   r   r   	Alignment_load_uiadd
get_objectshow)r   r   ui_pathroot_widgetbuilderr   r   r   r   C   s
    zBuilderDialog.__init__update-managerc             C   sx   t j }|j| |j||g |j|  xH|j D ]<}tt|t jrbt jj	|}t
| || q4tjd|  q4W |S )Nz"WARNING: can not get name for '%s')r   ZBuilderZset_translation_domainZadd_objects_from_fileZconnect_signalsZget_objects
issubclasstypeZ	BuildableZget_namesetattrloggingdebug)r   pathr"   Zdomainr#   onamer   r   r   r   K   s    

zBuilderDialog._load_uiNc             C   s*   |r| j j| | j jd | j j  d S )NT)window_dialogZset_transient_forZ	set_modalr   )r   r   r   r   r   r   Z   s    zBuilderDialog.run)r$   )N)r   r   r   r   r   r   r   r   r   r   r   B   s   
r   c               @   sh   e Zd ZdddZdd ZdddZd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )InternalDialogNc             C   sP   t jj|jd}tj| ||d tjjd| _	d | _
| j| | jd| j d S )Nzgtkbuilder/Dialog.uiZpane_dialogzcom.ubuntu.update-managerrealize)osr*   joinZdatadirr   r   r   ZSettingsnewsettingsfocus_buttonset_content_widgetconnect_on_realize)r   r   content_widgetr!   r   r   r   r   c   s    
zInternalDialog.__init__c             C   s6   | j r2| j jd | j jd | j j  | j j  d S )NT)r4   Zset_can_defaultZset_can_focusZgrab_defaultZ
grab_focus)r   Z	user_datar   r   r   r7   m   s
    
zInternalDialog._on_realizeFc                sF   t jj|}|jd fdd |j  | jj| | jj|| |S )NZclickedc                s     S )Nr   )x)callbackr   r   <lambda>w   s    z+InternalDialog.add_button.<locals>.<lambda>)r   ZButtonZnew_from_stockr6   r    Z	buttonboxr   Zset_child_secondary)r   labelr:   	secondaryZbuttonr   )r:   r   
add_buttont   s    zInternalDialog.add_buttonc             C   s*   t jjdr"| jtd| jddS d S d S )Nz /usr/bin/software-properties-gtku   Settings…T)r=   )r0   r*   existsr>   _on_settings_button_clicked)r   r   r   r   add_settings_button}   s
    
z"InternalDialog.add_settings_buttonc             C   s   | j j  d S )N)r   Zshow_settings)r   r   r   r   rA      s    z)InternalDialog.on_settings_button_clickedc             C   s(   |r| j jd|  | j jt| d S )Nz+<span size='larger' weight='bold'>%s</span>)Zlabel_header
set_markupset_visiblebool)r   r<   r   r   r   
set_header   s    
zInternalDialog.set_headerc             C   s$   |r| j j| | j jt| d S )N)
label_descrC   rD   rE   )r   r<   r   r   r   set_desc   s    zInternalDialog.set_descc             C   s$   |r| j j| | j jt| d S )N)Zmain_containerr   rD   rE   )r   r8   r   r   r   r5      s    z!InternalDialog.set_content_widgetc             C   s   t j }t }|j|S )N)distro_infoZUbuntuDistroInfor
   Zis_lts)r   ZdiZcodenamer   r   r   _is_livepatch_supported   s    z&InternalDialog._is_livepatch_supportedc             C   s6  | j d  |sN| j rJ| jrJ| jjddkrJ| j td | jjtd d S d}|dkr`d}n|dkrjn|d	kr|d
ks|dkrd}n|dkrdd |D }tddt|t| }| j | nZ|dks|dkrdd |D }tddt|t| }| j | n|dkrn
|dkr|r2| j	j
| j d S )Nzlaunch-count   zU<b>Tip:</b> You can use Livepatch to keep your computer more secure between restarts.u   Settings & Livepatch…Fzneeds-checkTzcheck-failedZcheckedZ	unappliedZapplyingZappliedc             S   s   g | ]}|j r|qS r   )patched).0fixr   r   r   
<listcomp>   s    z<InternalDialog.on_livepatch_status_ready.<locals>.<listcomp>z3%d Livepatch update applied since the last restart.z4%d Livepatch updates applied since the last restart.zapplied-with-bugzapply-failedc             S   s   g | ]}|j r|qS r   )rL   )rM   rN   r   r   r   rO      s    z;%d Livepatch update failed to apply since the last restart.z<%d Livepatch updates failed to apply since the last restart.znothing-to-applyunknown)rH   rJ   settings_buttonr3   Zget_intr@   Z	set_labelr   len	lp_socket
get_statuson_livepatch_status_ready)r   ZactiveZcsZpsfixesZneeds_rescheduledr   r   r   rU      sB    



z(InternalDialog.on_livepatch_status_readyc             C   s   t  | _| jj| j d S )N)r	   rS   rT   rU   )r   r   r   r   check_livepatch_status   s    z%InternalDialog.check_livepatch_status)N)F)r   r   r   r   r7   r>   rB   rA   rF   rH   r5   rJ   rU   rX   r   r   r   r   r.   b   s   


	.r.   c               @   s   e Zd Zdd Zdd ZdS )StoppedUpdatesDialogc             C   sL   t j| | | jtd | j  | jtd| j | jtj| j	j
| _d S )Nz"You stopped the check for updates.z_Check Again)r.   r   rF   r@   rB   r>   checkr   STOCK_OKr   r   r4   )r   r   r   r   r   r      s    zStoppedUpdatesDialog.__init__c             C   s   | j j  d S )N)r   start_update)r   r   r   r   rZ      s    zStoppedUpdatesDialog.checkN)r   r   r   r   rZ   r   r   r   r   rY      s   rY   c               @   s   e Zd ZdddZdS )NoUpdatesDialogFc             C   sX   t j| | |r | jtd n| jtd | j | _| jtj| j	j
| _| j  d S )Nz"No software updates are available.z,The software on this computer is up to date.)r.   r   rF   r@   rB   rQ   r>   r   r[   r   r   r4   rX   )r   r   error_occurredr   r   r   r      s    
zNoUpdatesDialog.__init__N)F)r   r   r   r   r   r   r   r   r]      s   r]   c               @   s   e Zd Zdd Zdd ZdS )DistUpgradeDialogc             C   sr   t j| | || _| jtd | jtd|j|jj|j	f  | j
  | jtd| j | jtj| jj| _d S )Nz,The software on this computer is up to date.z.However, %s %s is now available (you have %s).u
   Upgrade…)r.   r   meta_releaserF   r@   rH   flavor_nameupgradable_toversioncurrent_dist_versionrB   r>   upgrader   r[   r   r   r4   )r   r   r`   r   r   r   r      s    
zDistUpgradeDialog.__init__c             C   sN   d}| j r6| j jr6| j jjr$|d }| j jjr6|d }tjdddd|  d S )N z -dz -pz/bin/shz-cz</usr/bin/do-release-upgrade --frontend=DistUpgradeViewGtk3%s)r   ZoptionsZdevel_releaseZuse_proposedr0   execl)r   Z
extra_argsr   r   r   re      s    


zDistUpgradeDialog.upgradeN)r   r   r   r   re   r   r   r   r   r_      s   r_   c               @   s   e Zd Zdd Zdd ZdS )HWEUpgradeDialogc             C   s   t j| | | jtd tjj tjj	k rB| j
ttjjj n| j
ttjjj | j  | jtd| j | jtj| jj| _d S )Nz3New important security and hardware support update.u   _Install…)r.   r   rF   r@   datetimeZdateZtodayHweSupportStatusZconstsZHWE_EOL_DATErH   ZMessagesZHWE_SUPPORT_ENDSZHWE_SUPPORT_HAS_ENDEDrB   r>   installr   r[   r   r   r4   )r   r   r   r   r   r     s    zHWEUpgradeDialog.__init__c             C   s   | j jdd d S )NT)Zhwe_upgrade)r   Zstart_install)r   r   r   r   rk     s    zHWEUpgradeDialog.installN)r   r   r   r   rk   r   r   r   r   rh     s   rh   c               @   s   e Zd Zdd Zdd ZdS )UnsupportedDialogc             C   sH   t j| || | jtd|j|jf  | jtd|j|jjf  d S )Nz2Software updates are no longer provided for %s %s.z,To stay secure, you should upgrade to %s %s.)	r_   r   rF   r@   ra   rd   rH   rb   rc   )r   r   r`   r   r   r   r     s    

zUnsupportedDialog.__init__c             C   s   | j | j_tj| | d S )N)r-   r   Zno_longer_supported_nagr_   r   )r   r   r   r   r   r   %  s    
zUnsupportedDialog.runN)r   r   r   r   r   r   r   r   r   rl     s   rl   c               @   s   e Zd Zdd ZdS )NoUpgradeForYouDialogc             C   sJ   t j| | | jtd | jtd||jf  | jtj| j	j
| _d S )Nz1Sorry, there are no more upgrades for this systemz
There will not be any further Ubuntu releases for this system's '%s' architecture.

Updates for Ubuntu %s will continue until 2023-04-26.

If you reinstall Ubuntu from ubuntu.com/download, future upgrades will be available.)r.   r   rF   r@   rH   rd   r>   r   r[   r   r   r4   )r   r   r`   Zarchr   r   r   r   ,  s    
zNoUpgradeForYouDialog.__init__N)r   r   r   r   r   r   r   r   rm   +  s   rm   c               @   s$   e Zd Zdd Zdd Zdd ZdS )PartialUpgradeDialogc             C   sZ   t j| | | jtd | jtd | j  | jtd| j | jtdtj	| _
d S )Nz Not all updates can be installeda2  Run a partial upgrade, to install as many updates as possible.

    This can be caused by:
     * A previous upgrade which didn't complete
     * Problems with some of the installed software
     * Unofficial software packages not provided by Ubuntu
     * Normal changes of a pre-release version of Ubuntuz_Partial UpgradeZ	_Continue)r.   r   rF   r@   rH   rB   r>   re   r   Z	main_quitr4   )r   r   r   r   r   r   <  s    zPartialUpgradeDialog.__init__c             C   s   t jdddd d S )Nz/bin/shz-czR/usr/lib/ubuntu-release-upgrader/do-partial-upgrade --frontend=DistUpgradeViewGtk3)r0   rg   )r   r   r   r   re   K  s    
zPartialUpgradeDialog.upgradec             C   s   t j|  tj  d S )N)r   r   r   main)r   r   r   r   r   P  s    
zPartialUpgradeDialog.startN)r   r   r   r   re   r   r   r   r   r   rn   ;  s   rn   c               @   s   e Zd ZdddZdd ZdS )ErrorDialogNc             C   sP   t j| | | j| |r0| j| | jjd | j  | jtj	| j
j| _d S )NT)r.   r   rF   rH   rG   Zset_selectablerB   r>   r   r[   r   r   r4   )r   r   headerdescr   r   r   r   W  s    

zErrorDialog.__init__c             C   s   t j|  | jjdd d S )Nr   )r   r   rG   Zselect_region)r   r   r   r   r   a  s    
zErrorDialog.start)N)r   r   r   r   r   r   r   r   r   rp   V  s   

rp   c               @   s&   e Zd ZdddZdd Zdd ZdS )	UpdateErrorDialogNc             C   sB   t j| ||| | jj  | jtd| j | jtj| j	| _d S )Nz
_Try Again)
rp   r   r4   Zdestroyr>   r@   updater   r[   	available)r   r   rq   rr   r   r   r   r   i  s    
zUpdateErrorDialog.__init__c             C   s   | j j  d S )N)r   r\   )r   r   r   r   rt   p  s    zUpdateErrorDialog.updatec             C   s   | j jdd d S )NT)r^   )r   Zstart_available)r   r   r   r   ru   s  s    zUpdateErrorDialog.available)N)r   r   r   r   rt   ru   r   r   r   r   rs   h  s   
rs   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )NeedRestartDialogc             C   sN   t j| | | jtd | j  | jtd| jj| _| jtd| j	 d S )Nz;The computer needs to restart to finish installing updates.zRestart _Laterz_Restart Now)
r.   r   rF   r@   rB   r>   r   r   r4   restart)r   r   r   r   r   r   x  s    

zNeedRestartDialog.__init__c             C   s4   t j|  | jj  | jj jtjjtjj	B  d S )N)
r   r   r   r/   Z
get_windowZset_functionsr   Z
WMFunctionZMOVEZMINIMIZE)r   r   r   r   r     s    

zNeedRestartDialog.startc             O   s   | j   | jj  d S )N)#_request_reboot_via_session_managerr   r   )r   argskwargsr   r   r   rw     s    zNeedRestartDialog.restartc             C   sp   y,t j }|jdd}t j|d}|j  W n> t jk
rJ   | j  Y n" tk
rj } zW Y d d }~X nX d S )Nzorg.gnome.SessionManagerz/org/gnome/SessionManager)dbusZ
SessionBusr   	InterfaceZRequestRebootDBusException_request_reboot_via_consolekit	Exception)r   bus	proxy_objifaceer   r   r   rx     s    z5NeedRestartDialog._request_reboot_via_session_managerc             C   sp   y,t j }|jdd}t j|d}|j  W n> t jk
rJ   | j  Y n" tk
rj } zW Y d d }~X nX d S )Nzorg.freedesktop.ConsoleKitz#/org/freedesktop/ConsoleKit/Managerz"org.freedesktop.ConsoleKit.Manager)r{   	SystemBusr   r|   ZRestartr}   _request_reboot_via_logindr   )r   r   r   r   r   r   r   r   r~     s    z0NeedRestartDialog._request_reboot_via_consolekitc             C   sJ   y.t j }|jdd}t j|d}|jd W n t jk
rD   Y nX d S )Nzorg.freedesktop.login1z/org/freedesktop/login1zorg.freedesktop.login1.ManagerT)r{   r   r   r|   ZRebootr}   )r   r   r   r   r   r   r   r     s    z,NeedRestartDialog._request_reboot_via_logindN)	r   r   r   r   r   rw   rx   r~   r   r   r   r   r   rv   w  s   	rv   )*Z
__future__r   r   ZgiZrequire_versionZgi.repositoryr   r   r   warningsfilterwarningsDeprecationWarningr(   ri   r{   rI   r0   
subprocessZHweSupportStatus.constsrj   ZCore.LivePatchSocketr	   Z
Core.utilsr
   r   r@   r   objectr   r   r   r.   rY   r]   r_   rh   rl   rm   rn   rp   rs   rv   r   r   r   r   <module>   s@   
 n