o
    bpC                     @   st   d dl mZ d dl mZ d dlmZ d dlmZ ddlmZ ddlm	Z	 ddl
mZ dd	lmZ G d
d de	ZdS )    )Gtk)Gdk)	DomainCpu)log   )uiutil)vmmGObjectUI)vmmInspection)
vmmSystrayc                   @   s  e Zd Zedd Zdd ZdrddZdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLdM Z)dNdO Z*dPdQ Z+dRdS Z,dTdU Z-dVdW Z.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:dpdq Z;dS )svmmPreferencesc              
   C   sb   z| j st | _ | j |j W d S  ty0 } z|jtdt|  W Y d }~d S d }~ww )NzError launching preferences: %s)		_instancer   showtopwin	Exceptionerrshow_err_str)cls	parentobje r   2/usr/share/virt-manager/virtManager/preferences.pyshow_instance   s   zvmmPreferences.show_instancec                 C   s  t | dd |   |   d | _|   |   |   |   | 	  | 
  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | ji d| jd| jd| jd| j d| j!d| j"d	| j#d
| j$d| j%d| j&d| j'd| j(d| j)d| j*d| j+d| j,d| j-| j.| j/| j0| j1| j2| j3| j4| j5d | 6d7d | 8  d S )Nzpreferences.uizvmm-preferenceson_vmm_preferences_delete_eventon_prefs_close_clickedon_prefs_system_tray_toggledon_prefs_xmleditor_toggledon_prefs_libguestfs_toggled&on_prefs_stats_update_interval_changed on_prefs_console_scaling_changed$on_prefs_console_resizeguest_changed"on_prefs_console_autoredir_changed$on_prefs_console_autoconnect_toggledon_prefs_graphics_type_changedon_prefs_storage_format_changedon_prefs_cpu_default_changed!on_prefs_firmware_default_changed!on_prefs_stats_enable_cpu_toggled"on_prefs_stats_enable_disk_toggled!on_prefs_stats_enable_net_toggled)$on_prefs_stats_enable_memory_toggled&on_prefs_confirm_forcepoweroff_toggled!on_prefs_confirm_poweroff_toggledon_prefs_confirm_pause_toggled"on_prefs_confirm_removedev_toggled"on_prefs_confirm_unapplied_toggled#on_prefs_confirm_delstorage_toggled on_prefs_btn_keys_define_clickedprefs-graphics-typechanged)9r   __init___cleanup_on_app_close_init_ui_orig_libguestfs_valrefresh_view_system_trayrefresh_xmleditorrefresh_libguestfsrefresh_update_intervalrefresh_console_scalingrefresh_console_resizeguestrefresh_console_autoredirrefresh_console_autoconnectrefresh_graphics_typerefresh_storage_formatrefresh_cpu_defaultrefresh_firmware_defaultrefresh_cpu_pollrefresh_disk_pollrefresh_net_pollrefresh_memory_pollrefresh_grabkeys_combinationrefresh_confirm_forcepoweroffrefresh_confirm_poweroffrefresh_confirm_pauserefresh_confirm_removedevrefresh_confirm_unappliedrefresh_confirm_delstoragebuilderconnect_signalsclosechange_view_system_traychange_xmleditorchange_libguestfschange_update_intervalchange_console_scalingchange_console_resizeguestchange_console_autoredirchange_console_autoconnectchange_graphics_typechange_storage_formatchange_cpu_defaultchange_firmware_defaultchange_cpu_pollchange_disk_pollchange_net_pollchange_memory_pollchange_confirm_forcepoweroffchange_confirm_poweroffchange_confirm_pausechange_confirm_removedevchange_confirm_unappliedchange_confirm_delstoragechange_grab_keyswidgetemitbind_escape_key_closeselfr   r   r   r5      s   	

zvmmPreferences.__init__Nc                 C   s   t d | j  dS )NzClosing preferencesr   )r   debugr   hide)rn   ignore1ignore2r   r   r   rR   _   s   

zvmmPreferences.closec                 C   s$   t d | j| | j  d S )NzShowing preferences)r   ro   r   set_transient_forpresent)rn   parentr   r   r   r   d   s   
zvmmPreferences.showc                 C   s   d S Nr   rm   r   r   r   _cleanupi   s   zvmmPreferences._cleanupc                 C   s  |  d}ttt}dtdgdtdgdtdgfD ]}|| q|| t	|d |  d}ttt}td	td
d}|dtd|| j
j  g | D ]\}}|||g qV|| t	|d |  d}ttt}tdtdd}| D ]\}}|||g q|| t	|d |  d}ttt}dtd| j
j gddgddgfD ]}|| q|| t	|d |  d}ttt}dtd| j
j gddgddgfD ]}|| q|| t	|d |  d}ttt}tjtdgtjtd gtjtd!gtjd"gtjd#gfD ]}|| q!|| t	|d |  d$}ttt}dtd%gd&d'gfD ]}|| qJ|| t	|d t sw|  d(d) |  d(td* d S d S )+Nprefs-console-scalingr   Neverr   zFullscreen only   Alwaysprefs-console-resizeguestOffOn)r   r   zSystem default (%s)prefs-console-autoredirzManual redirect onlyzAuto redirect on USB attach)FTr3   systemvncVNCspiceSpiceprefs-storage-formatdefaultrawRawqcow2QCOW2prefs-cpu-defaultzApplication defaultzHypervisor defaultzNearest host CPU modelz
host-modelzhost-passthroughprefs-firmware-defaultzSystem defaultuefiUEFIprefs-libguestfsFz*python libguestfs support is not installed)rj   r   	ListStoreintr   r   append	set_modelr   init_combo_text_columnconfigdefault_console_resizeguestitemsbooldefault_graphics_from_config"default_storage_format_from_configr   SPECIAL_MODE_APP_DEFAULTSPECIAL_MODE_HV_DEFAULTSPECIAL_MODE_HOST_MODEL_ONLYSPECIAL_MODE_HOST_MODELSPECIAL_MODE_HOST_PASSTHROUGHr	   libguestfs_installedset_sensitiveset_tooltip_text)rn   combomodelrowvalskeyvalr   r   r   r7   l   s   




















zvmmPreferences._init_uic                 C   sV   t  }t| j o| }| dt|  | d| | d| d S )Nzprefs-system-tray)	r
   systray_disabled_messager   r   get_view_system_trayrj   r   r   
set_active)rn   errmsgr   r   r   r   r9      s
   z'vmmPreferences.refresh_view_system_trayc                 C   s"   | j  }| dt| d S )Nzprefs-xmleditor)r   get_xmleditor_enabledrj   r   r   rn   r   r   r   r   r:      s   
z vmmPreferences.refresh_xmleditorc                 C   s2   | j  }| jd u r|| _| dt| d S )Nr   )r   get_libguestfs_inspect_vmsr8   rj   r   r   r   r   r   r   r;      s   

z!vmmPreferences.refresh_libguestfsc                 C      |  d| j  d S )Nzprefs-stats-update-interval)rj   	set_valuer   get_stats_update_intervalrm   r   r   r   r<         
z&vmmPreferences.refresh_update_intervalc                 C   $   |  d}| j }t|| d S )Nrx   )rj   r   get_console_scalingr   set_list_selectionrn   r   r   r   r   r   r=         

z&vmmPreferences.refresh_console_scalingc                 C   r   )Nr|   )rj   r   get_console_resizeguestr   r   r   r   r   r   r>      r   z*vmmPreferences.refresh_console_resizeguestc                 C   r   )Nr   )rj   r   get_auto_usbredirr   r   r   r   r   r   r?      r   z(vmmPreferences.refresh_console_autoredirc                 C   s   | j  }| d| d S )Nzprefs-console-autoconnect)r   get_console_autoconnectrj   r   r   r   r   r   r@      s   
z*vmmPreferences.refresh_console_autoconnectc                 C   (   |  d}| jjdd}t|| d S )Nr3   Tr   )rj   r   get_graphics_typer   r   )rn   r   gtyper   r   r   rA         
z$vmmPreferences.refresh_graphics_typec                 C   r   )Nr   Tr   )rj   r   get_default_storage_formatr   r   r   r   r   r   rB      r   z%vmmPreferences.refresh_storage_formatc                 C   r   )Nr   )rj   r   get_default_cpu_settingr   r   r   r   r   r   rC      r   z"vmmPreferences.refresh_cpu_defaultc                 C   r   )Nr   )rj   r   get_default_firmware_settingr   r   r   r   r   r   rD      r   z'vmmPreferences.refresh_firmware_defaultc                 C   r   )Nzprefs-stats-enable-cpu)rj   r   r   get_stats_enable_cpu_pollrm   r   r   r   rE      r   zvmmPreferences.refresh_cpu_pollc                 C   r   )Nzprefs-stats-enable-disk)rj   r   r   get_stats_enable_disk_pollrm   r   r   r   rF      r   z vmmPreferences.refresh_disk_pollc                 C   r   )Nzprefs-stats-enable-net)rj   r   r   get_stats_enable_net_pollrm   r   r   r   rG     r   zvmmPreferences.refresh_net_pollc                 C   r   )Nzprefs-stats-enable-memory)rj   r   r   get_stats_enable_memory_pollrm   r   r   r   rH     r   z"vmmPreferences.refresh_memory_pollc              	   C   sL   g }| dD ]}zt|}|t| W q ty    Y qw d|S )N,+)splitr   r   r   keyval_namer   join)rn   r   keyskr   r   r   r   _process_grabkeys
  s   
z vmmPreferences._process_grabkeysc                 C   s,   | j  }| |}| d|pd d S )Nzprefs-keys-grab-sequence )r   get_keys_combinationr   rj   set_text)rn   r   keystrr   r   r   rI     s   

z+vmmPreferences.refresh_grabkeys_combinationc                 C   r   )Nzprefs-confirm-forcepoweroff)rj   r   r   get_confirm_forcepoweroffrm   r   r   r   rJ     r   z,vmmPreferences.refresh_confirm_forcepoweroffc                 C   r   )Nzprefs-confirm-poweroff)rj   r   r   get_confirm_poweroffrm   r   r   r   rK     r   z'vmmPreferences.refresh_confirm_poweroffc                 C   r   )Nzprefs-confirm-pause)rj   r   r   get_confirm_pauserm   r   r   r   rL      r   z$vmmPreferences.refresh_confirm_pausec                 C   r   )Nzprefs-confirm-removedev)rj   r   r   get_confirm_removedevrm   r   r   r   rM   #  r   z(vmmPreferences.refresh_confirm_removedevc                 C   r   )Nzprefs-confirm-unapplied)rj   r   r   get_confirm_unappliedrm   r   r   r   rN   &  r   z(vmmPreferences.refresh_confirm_unappliedc                 C   r   )Nzprefs-confirm-delstorage)rj   r   r   get_confirm_delstoragerm   r   r   r   rO   )  r   z)vmmPreferences.refresh_confirm_delstoragec                 C   s0   d}|D ]\}}|r|d7 }|t |7 }q|S )Nr   r   )r   r   )rn   eventsr   ignorekeyvalr   r   r   grabkeys_get_string-  s   z"vmmPreferences.grabkeys_get_stringc                    s8    fdd|D s|  j jf || | d S )Nc                       g | ]}|d   j kr|qS r   hardware_keycode.0r   eventr   r   
<listcomp>6      z5vmmPreferences.grabkeys_dlg_press.<locals>.<listcomp>)r   r   r   r   r   )rn   
src_ignorer   labelr   r   r   r   grabkeys_dlg_press5  s   z!vmmPreferences.grabkeys_dlg_pressc                    s6    fdd|D D ]}| | q	|| | d S )Nc                    r   r   r   r   r   r   r   r   <  r   z7vmmPreferences.grabkeys_dlg_release.<locals>.<listcomp>)remover   r   )rn   r   r   r   r   r   r   r   r   grabkeys_dlg_release;  s   z#vmmPreferences.grabkeys_dlg_releasec              	   C   s  t td| jt jjt jjB t jt jj	t j
t jjf}|dd |d t jtdd}t jtdd}t  }|d ||d	d	d
 ||d	d	d
 | | g }|d| j|| |d| j|| |  | }|t jjkr| jdd |D  |   |  d S )NzConfigure grab key combinationiE        zYou can now define grab keys by pressing them.
To confirm your selection please click OK button
while you have desired keys pressed.)r   z)Please press desired grab key combination   Fr   zkey-press-eventzkey-release-eventc                 S   s   g | ]}|d  qS )r   r   r   r   r   r   r   _  s    z3vmmPreferences.change_grab_keys.<locals>.<listcomp>)r   Dialogr   r   DialogFlagsMODALDESTROY_WITH_PARENTSTOCK_CANCELResponseTypeREJECTSTOCK_OKACCEPTset_default_sizeset_border_widthLabelVBoxset_spacing
pack_startget_content_areaaddconnectr   r   show_allrunr   set_keys_combinationrI   destroy)rn   r   dialog	infolabelkeylabelvboxr   resultr   r   r   ri   A  s>   






zvmmPreferences.change_grab_keysc                 C      | j |  d S rv   )r   set_view_system_tray
get_activern   srcr   r   r   rS   d     z&vmmPreferences.change_view_system_trayc                 C   r  rv   )r   set_xmleditor_enabledr  r  r   r   r   rT   f  r  zvmmPreferences.change_xmleditorc                 C   sB   |  }| j| || jko| d }t| d| d S )Nr   zprefs-libguestfs-warn-box)r  r   set_libguestfs_inspect_vmsr8   rj   get_sensitiver   set_grid_row_visible)rn   r  r   visr   r   r   rU   h  s   

z vmmPreferences.change_libguestfsc                 C   r  rv   )r   set_stats_update_intervalget_value_as_intr  r   r   r   rV   q  r  z%vmmPreferences.change_update_intervalc                 C   r  rv   )r   set_console_scalingr  )rn   boxr   r   r   rW   t  r  z%vmmPreferences.change_console_scalingc                 C      t |}| j| d S rv   )r   get_list_selectionr   set_console_resizeguestrn   r  r   r   r   r   rX   v     
z)vmmPreferences.change_console_resizeguestc                 C   r  rv   )r   r  r   set_auto_usbredirr  r   r   r   rY   y  r  z'vmmPreferences.change_console_autoredirc                 C   s   | j t|  d S rv   )r   set_console_autoconnectr   r  r  r   r   r   rZ   |  s   z)vmmPreferences.change_console_autoconnectc                 C   r  rv   )r   r  r   set_graphics_type)rn   r  r   r   r   r   r[     r  z#vmmPreferences.change_graphics_typec                 C   "   t |pd}| j|  d S Nr   )r   r  r   set_storage_formatlowerrn   r  typr   r   r   r\        z$vmmPreferences.change_storage_formatc                 C   r#  r$  )r   r  r   set_default_cpu_settingr&  r'  r   r   r   r]     r)  z!vmmPreferences.change_cpu_defaultc                 C   r#  r$  )r   r  r   set_firmware_settingr&  r'  r   r   r   r^     r)  z&vmmPreferences.change_firmware_defaultc                 C   r  rv   )r   set_stats_enable_cpu_pollr  r  r   r   r   r_     r  zvmmPreferences.change_cpu_pollc                 C   r  rv   )r   set_stats_enable_disk_pollr  r  r   r   r   r`     r  zvmmPreferences.change_disk_pollc                 C   r  rv   )r   set_stats_enable_net_pollr  r  r   r   r   ra     r  zvmmPreferences.change_net_pollc                 C   r  rv   )r   set_stats_enable_memory_pollr  r  r   r   r   rb     r  z!vmmPreferences.change_memory_pollc                 C   r  rv   )r   set_confirm_forcepoweroffr  r  r   r   r   rc     r  z+vmmPreferences.change_confirm_forcepoweroffc                 C   r  rv   )r   set_confirm_poweroffr  r  r   r   r   rd     r  z&vmmPreferences.change_confirm_poweroffc                 C   r  rv   )r   set_confirm_pauser  r  r   r   r   re     r  z#vmmPreferences.change_confirm_pausec                 C   r  rv   )r   set_confirm_removedevr  r  r   r   r   rf     r  z'vmmPreferences.change_confirm_removedevc                 C   r  rv   )r   set_confirm_unappliedr  r  r   r   r   rg     r  z'vmmPreferences.change_confirm_unappliedc                 C   r  rv   )r   set_confirm_delstorager  r  r   r   r   rh     r  z(vmmPreferences.change_confirm_delstorage)NN)<__name__
__module____qualname__classmethodr   r5   rR   r   rw   r7   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r   rI   rJ   rK   rL   rM   rN   rO   r   r   r   ri   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   r   r   r   r   r      st    
	
A[#	r   N)gi.repositoryr   r   virtinstr   r   libr   	baseclassr   lib.inspectionr	   systrayr
   r   r   r   r   r   <module>   s   