o
    #Xbg  ã                   @   sŽ   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 dd
lmZ edƒ\ZZZG dd„ deƒZdS )é    )ÚGdk)ÚGtk)Úlogé   )Úvmmenu)ÚvmmGObjectUI)Ú	vmmEngine)ÚvmmConsolePages)Ú
vmmDetails)ÚvmmSnapshotPageé   c                   @   sð  e Zd Zejdegfejdg fdœZedd„ ƒZdqdd„Z	e
dd„ ƒZd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdrd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/d0„ Zd1d2„ Z d3d4„ Z!d5d6„ Z"d7d8„ Z#d9d:„ Z$d;d<„ Z%d=d>„ Z&d?d@„ Z'dAdB„ Z(dCdD„ Z)dEdF„ Z*dGdH„ Z+dIdJ„ Z,dKdL„ Z-dMdN„ Z.dOdP„ Z/dqdQdR„Z0dSdT„ Z1dUdV„ Z2dWdX„ Z3dYdZ„ Z4d[d\„ Z5d]d^„ Z6d_d`„ Z7dadb„ Z8dcdd„ Z9dedf„ Z:dgdh„ Z;didj„ Z<dkdl„ Z=dmdn„ Z>dodp„ Z?dS )sÚvmmVMWindowN)úcustomize-finishedÚclosedc              
   C   s   z%d|j  ¡ | ¡ f }| jd u ri | _|| jvr t|ƒ| j|< | j| W S  tyG } z|s0‚ |j tdƒt	|ƒ ¡ W Y d }~d S d }~ww )Nz%s+%szError launching details: %s)
ÚconnÚget_uriÚget_uuidÚ
_instancesr   Ú	ExceptionÚerrÚshow_errÚ_Ústr)ÚclsÚ	parentobjÚvmÚkeyÚe© r   ú//usr/share/virt-manager/virtManager/vmwindow.pyÚget_instance    s   

ÿ€ýzvmmVMWindow.get_instancec                 C   sþ  t  | dd¡ || _d| _|rGd| _| j tjj¡ | j 	|¡ |  
d¡ ¡  |  
d¡ ¡  |  
d¡ ¡  |  
d¡ ¡  |  
d	¡}| t¡ n| j d
| j¡ d| _t| j| j| jƒ| _|  
d¡ | jj¡ | j d| j¡ | j d| j¡ | j d| j¡ t| j| j| jƒ| _|  
d¡ | jj¡ t| j| j| j| jƒ| _|  
d¡ | jj¡ | j ¡ \}}|dks·|dkr¼|   ¡  n| j !||¡ 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| j0“d| j1“d | j2“d!| j3“d"| j4“| j5| j6| j+| j+| j+| j7| j8| j9| j:| j:| j:| j;| j<d#œ¥¡ | j d$| j=¡ | j d%| j>¡ |  ?¡  |  @¡  |  A| j B| j@¡¡ |  C¡  |  A| j D| jC¡¡ |  E¡  |  A| j F| jE¡¡ |  G¡  |  H¡  d S )&Nzvmwindow.uizvmm-vmwindowFTútoolbar-boxzcustomize-toolbarzdetails-toolbarúdetails-menubarúdetails-pagesz
vm-removedzconsole-placeholderzpage-changedzleave-fullscreenzchange-titlezsnapshot-placeholderzdetails-placeholderr   Úon_close_details_clickedÚon_details_menu_close_activateÚon_vmm_details_delete_eventÚon_vmm_details_configure_eventÚon_details_menu_quit_activateÚon_control_vm_details_toggledÚon_control_vm_console_toggledÚon_control_snapshots_toggledÚon_control_run_clickedÚon_control_shutdown_clickedÚon_control_pause_toggledÚon_control_fullscreen_toggledÚ#on_details_customize_finish_clickedÚ#on_details_cancel_customize_clickedÚ(on_details_menu_virtual_manager_activateÚ#on_details_menu_screenshot_activateÚon_details_menu_usb_redirection)Ú%on_details_menu_view_toolbar_activateÚ%on_details_menu_view_manager_activateÚ$on_details_menu_view_details_toggledÚ$on_details_menu_view_console_toggledÚ&on_details_menu_view_snapshots_toggledÚon_details_pages_switch_pageÚ(on_details_menu_view_fullscreen_activateÚ(on_details_menu_view_size_to_vm_activateÚ)on_details_menu_view_scale_always_toggledÚ-on_details_menu_view_scale_fullscreen_toggledÚ(on_details_menu_view_scale_never_toggledÚ(on_details_menu_view_resizeguest_toggledÚ)on_details_menu_view_autoconnect_activatezstate-changedzresources-sampled)Ir   Ú__init__r   Úis_customize_dialogÚtopwinÚset_type_hintr   ÚWindowTypeHintÚDIALOGÚset_transient_forÚwidgetÚshowÚhideÚset_current_pageÚDETAILS_PAGE_DETAILSr   ÚconnectÚ_vm_removed_cbÚignoreDetailsr	   ÚbuilderÚ_consoleÚaddÚtop_boxÚ_console_page_changed_cbÚ_console_leave_fullscreen_cbÚ_console_change_title_cbr   Ú
_snapshotsr
   Ú_detailsÚget_details_window_sizeÚ_set_initial_window_sizeÚset_default_sizeÚ_window_sizeÚ_shutdownmenuÚ_vmmenuÚ
init_menusÚconnect_signalsÚcloseÚ_window_delete_eventÚwindow_resizedÚexit_appÚdetails_console_changedÚcontrol_vm_runÚcontrol_vm_shutdownÚcontrol_vm_pauseÚcontrol_fullscreenÚcustomize_finishÚ_customize_cancel_clickedÚcontrol_vm_menuÚcontrol_vm_screenshotÚcontrol_vm_usb_redirectionÚtoggle_toolbarÚview_managerÚ_details_page_switch_cbÚ_fullscreen_changed_cbÚ_size_to_vm_cbÚ_scaling_ui_changed_cbÚ_resizeguest_ui_changed_cbÚ_autoconnect_ui_changed_cbÚ_vm_state_changed_cbÚ_resources_sampled_cbÚ_sync_console_page_menu_stateÚ&_console_refresh_scaling_from_settingsÚadd_gsettings_handleÚon_console_scaling_changedÚ*_console_refresh_resizeguest_from_settingsÚon_console_resizeguest_changedÚ*_console_refresh_autoconnect_from_settingsÚon_console_autoconnect_changedÚ_refresh_vm_stateÚactivate_default_page)Úselfr   ÚparentÚpagesÚwÚhr   r   r   rB   0   sÜ   
ÿÿÿ
ÿþýüûùø	÷
öõôóñðîíì
Ý'ÿÿÿÿÿÿzvmmVMWindow.__init__c                 C   s   | j jS ©N)r   r   ©r„   r   r   r   r   ¡   s   zvmmVMWindow.connc                 C   sz   | j  ¡  d | _ | j ¡  d | _| j ¡  d | _| j ¡  d | _| j ¡  d | _| jr2| jj	| jŽ  | j
 | ¡ d | _d S r‰   )rR   ÚcleanuprX   rY   r^   Údestroyr_   r]   r   Úset_details_window_sizer   Údisconnect_by_objrŠ   r   r   r   Ú_cleanup¥   s   





zvmmVMWindow._cleanupc                 C   s@   t  d| j¡ |  ¡ }| j ¡  |rd S t ¡  ¡  |  	¡  d S )NzShowing VM details: %s)
r   Údebugr   Ú
is_visiblerD   Úpresentr   r    Úincrement_window_counterr‚   )r„   Úvisr   r   r   rJ   ·   s   
zvmmVMWindow.showc                 C   s$   |}| j  ¡ r	d S |  d| j¡ d S )Nr   )rY   Úvmwindow_has_unapplied_changesÚemitr   ©r„   ÚsrcÚignorer   r   r   rk   Á   s   
zvmmVMWindow.customize_finishc                    sD   d}d}g ‰ ‡ ‡fdd„}ˆ  d¡ ||¡ ˆ  ˆj d|¡¡ dS )a¥  
        We want the window size for new windows to be 1024x768 viewer
        size, plus whatever it takes to fit the toolbar+menubar, etc.
        To achieve this, we force the display box to the desired size
        with set_size_request, wait for the window to report it has
        been resized, and then unset the hardcoded size request so
        the user can manually resize the window however they want.
        i   i   c                    s&   ˆ  d¡ dd¡ ˆj ˆ d ¡ d S )Nr#   éÿÿÿÿr   )rI   Úset_size_requestrD   Ú
disconnect)r˜   Úevent©Úhidr„   r   r   Úwin_cbÓ   s   z4vmmVMWindow._set_initial_window_size.<locals>.win_cbr#   zconfigure-eventN)rI   r›   ÚappendrD   rN   )r„   r‡   rˆ   r    r   rž   r   r[   Ç   s   	z$vmmVMWindow._set_initial_window_sizec                 C   s   | j |kr|  ¡  d S d S r‰   )r   r‹   )r„   Ú_connr   r   r   r   rO   Ù   s   
ÿzvmmVMWindow._vm_removed_cbc                 C   s>   t  d¡ | j tdƒ¡}|st  d¡ d S t  d¡ |  ¡ S )NzAsking to cancel customizationz/This will abort the installation. Are you sure?zCustomize cancel abortedzCanceling customization)r   r   r   Úyes_nor   Ú_close)r„   Úresultr   r   r   Ú_customize_cancelÝ   s   
ÿ

zvmmVMWindow._customize_cancelc                 C   s   |}|   ¡ S r‰   )r¦   r—   r   r   r   rl   é   s   z%vmmVMWindow._customize_cancel_clickedc                 C   s   |   ¡ S r‰   )rb   ©r„   Úignore1Úignore2r   r   r   rc   í   s   z vmmVMWindow._window_delete_eventc                 C   s   |   ¡ rt d| j¡ |  ¡ S )NzClosing VM details: %s)r‘   r   r   r   r¤   r§   r   r   r   rb   ð   s   zvmmVMWindow.closec                 C   s`   |   d¡}| ¡ r| d¡ |  ¡ sd S | j ¡  | j ¡  | j ¡  |  	d¡ t
 ¡  ¡  dS )Núdetails-menu-view-fullscreenFr   r   )rI   Ú
get_activeÚ
set_activer‘   rD   rK   rR   Úvmwindow_closerY   r–   r   r    Údecrement_window_counter)r„   Úfsr   r   r   r¤   õ   s   





zvmmVMWindow._closec                    sò   t  ˆ ‡ fdd„¡ˆ _ˆ  d¡ ˆ j¡ ˆ  d¡ d¡ ˆ  d¡}| ¡ }t jˆ ‡ fdd„ddˆ _| 	¡ D ]}| 
|¡ ˆ j |¡ q6| ˆ j¡ | ¡  ˆ  d	¡ d¡ ˆ  d
¡ ˆ j ¡ ¡ ˆ  d¡ ˆ j ¡ ¡ ˆ  d¡ ˆ j ¡ ¡ d S )Nc                      ó   ˆ j S r‰   ©r   r   rŠ   r   r   Ú<lambda>  ó    z(vmmVMWindow.init_menus.<locals>.<lambda>úcontrol-shutdownzsystem-shutdownúdetails-vm-menuc                      r°   r‰   r±   r   rŠ   r   r   r²     r³   F)Ú	show_openr#   údetails-menu-view-toolbarzdetails-menu-send-keyzdetails-menu-view-console-list)r   ÚVMShutdownMenur^   rI   Úset_menuÚset_icon_nameÚget_submenuÚVMActionMenur_   Úget_childrenÚremoverS   Úset_submenuÚshow_allÚset_show_tabsr¬   ÚconfigÚget_details_show_toolbarrR   Úvmwindow_get_keycombo_menuÚvmwindow_get_console_list_menu)r„   ÚtopmenuÚsubmenuÚchildr   rŠ   r   r`   
  s.   
ÿ

ÿ
ÿ
ÿzvmmVMWindow.init_menusc                 C   s   |   ¡ sd S | j ¡ | _d S r‰   )r‘   rD   Úget_sizer]   )r„   r™   r©   r   r   r   rd   +  s   zvmmVMWindow.window_resizedc                 C   s0   |   d¡}| ¡ | ¡ kr| | ¡ ¡ d S d S )Nrª   )rI   r«   r¬   )r„   r˜   Úmenur   r   r   rj   0  s   
ÿzvmmVMWindow.control_fullscreenc                 C   sF   | j rd S | ¡ }| j |¡ |  d¡ ¡ }|  d¡ |o| ¡ d S )Nrª   r!   )rC   r«   rÂ   Úset_details_show_toolbarrI   Úset_visible)r„   r˜   ÚactiveÚfsactiver   r   r   rp   5  s   zvmmVMWindow.toggle_toolbarc                 C   s²   | j rd S | ¡ sd S ||  d¡kp||  d¡k}||  d¡kp&||  d¡k}|  d¡}| ¡ tkr@| j ¡ r@|  | ¡ ¡ d S |rI| t¡ d S |rR| t	¡ d S | t
¡ d S )Núcontrol-vm-detailsúdetails-menu-view-detailsúcontrol-snapshotsúdetails-menu-view-snapshotsr#   )rP   r«   rI   Úget_current_pagerM   rY   r•   Ú_sync_toolbar_page_buttonsrL   ÚDETAILS_PAGE_SNAPSHOTSÚDETAILS_PAGE_CONSOLE)r„   r˜   Ú
is_detailsÚis_snapshotr†   r   r   r   rf   >  s(   ÿÿ

z#vmmVMWindow.details_console_changedc                 C   s°   |   d¡}|   d¡}|   d¡}|   d¡}|   d¡}|   d¡}|tk}|tk}	| o+|	 }
z'd| _| |¡ | |¡ | |	¡ | |	¡ | |
¡ | |
¡ W d| _d S d| _w )	NrÏ   rÐ   zcontrol-vm-consolezdetails-menu-view-consolerÑ   rÒ   TF)rI   rM   rÕ   rP   r¬   )r„   ÚnewpageÚdetailsÚdetails_menuÚconsoleÚconsole_menuÚsnapshotÚsnapshot_menur×   rØ   Ú
is_consoler   r   r   rÔ   W  s$   










z&vmmVMWindow._sync_toolbar_page_buttonsc                 C   sJ   t | ¡ ƒD ]}| |¡}| ||k¡ q|  |¡ |  |¡ |  ¡  d S r‰   )ÚrangeÚget_n_pagesÚget_nth_pagerÌ   Ú_refresh_current_pagerÔ   rz   )r„   ÚnotebookÚ
pagewidgetrÙ   Úir‡   r   r   r   rr   o  s   


z#vmmVMWindow._details_page_switch_cbc                 C   sJ   |rt dƒ}nt dƒ}| dd¡}|  d¡ ¡  |¡ |  d¡ |¡ d S )NÚ_RestoreÚ_Runr   Ú rµ   úcontrol-run)r   ÚreplacerI   r»   Úchange_run_textÚ	set_label)r„   Úcan_restoreÚtextÚ
strip_textr   r   r   rí   x  s   
zvmmVMWindow.change_run_textc                 C   sJ   t dƒ| j ¡ | jj ¡ dœ }| j ¡ }|r|d | }| j |¡ d S )Nz"%(vm-name)s on %(connection-name)s)zvm-namezconnection-nameú )	r   r   Úget_name_or_titler   Úget_pretty_descrR   Úvmwindow_get_title_messagerD   Ú	set_title)r„   ÚtitleÚgrabmsgr   r   r   Ú_refresh_title‚  s   
þ
zvmmVMWindow._refresh_titlec           	      C   sP  | j }|  ¡  |  d¡ | j ¡ ¡ |  |  d¡¡ | ¡ }| ¡ }| 	¡ }|j
r0|  | ¡ ¡ |  d¡ |¡ |  d¡ |¡ |  d¡ ¡  |¡ |  d¡ |¡ |rYtdƒ}ntdƒ}|  d¡ |¡ |  d¡ ¡  |¡ |  |¡ | j  ¡ }t|ƒ }|  d¡ |¡ |  d	¡ |¡ td
ƒ}|sš|d| 7 }|  d¡ |¡ |  ¡  d S )Nr·   rë   r´   úcontrol-pausezResume the virtual machinezPause the virtual machinerµ   rÑ   rÒ   zManage VM snapshotsÚ
)r   rù   rI   r¬   rÂ   rÃ   rp   Ú
is_runableÚis_stoppableÚ	is_pausedÚmanagedsave_supportedrí   Úhas_managed_saveÚset_sensitiveÚget_menuÚupdate_widget_statesr   Úset_tooltip_textr»   Úset_pause_stateÚsnapshots_supportedÚboolrä   )	r„   r   ÚrunÚstopÚpausedÚpauseTooltipÚerrmsgÚcansnapÚtooltipr   r   r   r‚   Ž  s<   
ÿ



zvmmVMWindow._refresh_vm_statec                 C   s   ddl m} | | ¡ ¡  d S )Nr   )Ú
vmmManager)Úmanagerr  r    rJ   )r„   Ú_srcr  r   r   r   rq   »  s   zvmmVMWindow.view_managerc                 C   s   t  ¡  ¡  d S r‰   )r   r    re   )r„   r  r   r   r   re   ¿  s   zvmmVMWindow.exit_appc                 C   ó   | j  ¡  d S r‰   )rR   Ú&vmwindow_activate_default_console_pagerŠ   r   r   r   Úactivate_default_console_pageÂ  ó   z)vmmVMWindow.activate_default_console_pagec                 C   s*   | j rd S |  d¡}| t¡ |  ¡  d S ©Nr#   )rC   rI   rL   rÖ   r  ©r„   r†   r   r   r   rƒ   Æ  s
   

z!vmmVMWindow.activate_default_pagec                 C   s   |   d¡}| t¡ d S r  )rI   rL   rÖ   r  r   r   r   Úactivate_console_pageÍ  s   
z!vmmVMWindow.activate_console_pagec                 C   s   |   d¡ t¡ | j ¡  d S r  )rI   rL   rM   rY   Ú"vmwindow_activate_performance_pagerŠ   r   r   r   Úactivate_performance_pageÑ  s   z%vmmVMWindow.activate_performance_pagec                 C   s   |   d¡ t¡ d S r  )rI   rL   rM   rŠ   r   r   r   Úactivate_config_pageÕ  ó   z vmmVMWindow.activate_config_pagec              	   C   sB   |   d¡}z| | j¡ | |¡ W | | j¡ d S | | j¡ w )Nrú   )rI   Úhandler_block_by_funcri   r¬   Úhandler_unblock_by_func)r„   Ústater˜   r   r   r   r  Ø  s
   
zvmmVMWindow.set_pause_statec                 C   s@   |  ¡ }|  | ¡ |rtj | | j¡ d S tj | | j¡ d S r‰   )r«   r  r   Ú
VMActionUIÚsuspendr   Úresume)r„   r˜   Údo_pauser   r   r   ri   à  s
   zvmmVMWindow.control_vm_pausec                 C   s,   t | j ¡ o
| j ¡ ƒ}|  d¡ |¡ d S )Núdetails-menu-usb-redirection)r  r   Úhas_spicevmc_type_redirdevrR   Ú#vmwindow_viewer_has_usb_redirectionrI   r  )r„   Ú
src_ignoreÚcan_usbr   r   r   rm   ì  s   ÿzvmmVMWindow.control_vm_menuc                 C   s"   | j  ¡ rd S tj | | j¡ d S r‰   )rY   r•   r   r   r  r   ©r„   r'  r   r   r   rg   ñ  s   
zvmmVMWindow.control_vm_runc                 C   s   t j | | j¡ d S r‰   )r   r   Úshutdownr   r)  r   r   r   rh   ö  r  zvmmVMWindow.control_vm_shutdownc              
   C   sN   |}z|   ¡ W S  ty& } z| j tdƒt|ƒ ¡ W Y d }~d S d }~ww )NzError taking screenshot: %s)Ú_take_screenshotr   r   r   r   r   )r„   r˜   r™   r   r   r   r   rn   ù  s   
&€ÿz!vmmVMWindow.control_vm_screenshotc                 C   sP   |}| j }| j ¡ }|s| j  tdƒ¡ d S | ¡  |jtdƒ|tjj	d d S )Nz*Error initializing spice USB device widgetz"Select USB devices for redirection)rI   Úbuttons)
r   rR   Úvmwindow_viewer_get_usb_widgetr   r   rJ   Ú	show_infor   ÚButtonsTypeÚCLOSE)r„   r˜   r™   Úspice_usbdev_dialogÚspice_usbdev_widgetr   r   r   ro      s   


þz&vmmVMWindow.control_vm_usb_redirectionc           	      C   s,  | j  ¡ }| jj ¡ | j ¡ | j ¡ | j ¡ | j 	¡ dœ}| 
dt| ¡ ƒt| ¡ ƒ¡}t|tƒr;t|ƒdkr;|d }t|dƒrC|j}dd l}t|j ¡ ƒ d¡d  dd	¡}d
| j ¡ |f }| jj| jjtdƒdtdƒftjj| jj|d}|st  d¡ d S |}| !d¡sŒ|d7 }t"|dƒ #|¡ d S )N)ztEXt::Hypervisor URIztEXt::Domain NameztEXt::Domain UUIDztEXt::Generator AppztEXt::Generator VersionÚpngé   r   Úbufferr   Ú.rò   r   zScreenshot_%s_%s.pngzSave Virtual Machine Screenshotz	PNG files)Ú_typeÚdialog_typeÚbrowse_reasonÚdefault_namez(No screenshot path given, skipping save.z.pngÚwb)$rR   Úvmwindow_viewer_get_pixbufr   r   r   Úget_namer   rÂ   Úget_appnameÚget_appversionÚsave_to_buffervÚlistÚkeysÚvaluesÚ
isinstanceÚtupleÚlenÚhasattrr5  Údatetimer   ÚnowÚsplitrì   r   Úbrowse_localr   r   ÚFileChooserActionÚSAVEÚCONFIG_DIR_SCREENSHOTr   r   ÚendswithÚopenÚwrite)	r„   ÚimageÚmetadataÚretrH  rI  ÚdefaultÚpathÚfilenamer   r   r   r+    s>   

ûÿ
 
û

zvmmVMWindow._take_screenshotc                 C   s,   |   d¡}| ¡ }|tkr| j ¡  d S d S r  )rI   rÓ   rM   rY   Úvmwindow_resources_refreshed)r„   rÚ   Úpager   r   r   Ú_refresh_resources=  s
   
ÿzvmmVMWindow._refresh_resourcesc                 C   sV   |p|   d¡ ¡ }|tk}| j |¡ |tkr| j ¡  d S |tkr)| j ¡  d S d S r  )	rI   rÓ   rM   rY   Úvmwindow_refresh_vm_staterÖ   rR   rÕ   rX   )r„   rÙ   r×   r   r   r   rä   D  s   ÿz!vmmVMWindow._refresh_current_pagec                 C   sˆ   | j sd S | j  ¡ }| j ¡ }| j ¡ }|  d¡ |¡ |  d¡ |¡ | j ¡ }|o-| }| ¡ D ]}| |¡ q2|  	¡  |  
¡  d S )Nzdetails-menu-vm-screenshotr$  )r   rþ   rR   Úvmwindow_get_viewer_is_visibleÚvmwindow_get_can_usb_redirectrI   r  rÄ   r½   Ú_console_refresh_can_fullscreenr~   )r„   r
  Ú	is_viewerr(  Úkeycombo_menuÚcan_sendkeyÚcr   r   r   rz   T  s   




z)vmmVMWindow._sync_console_page_menu_statec                 C   s.   | j  ¡ }|  d¡ |¡ |  d¡ |¡ d S )Núcontrol-fullscreenrª   )rR   r\  rI   r  )r„   Úallow_fullscreenr   r   r   r^  i  s
   

ÿz+vmmVMWindow._console_refresh_can_fullscreenc                 C   s`   | j  ¡ }|  d¡ || jjk¡ |  d¡ || jjk¡ |  d¡ || jjk¡ | j 	¡  d S )Núdetails-menu-view-scale-alwaysúdetails-menu-view-scale-neverú"details-menu-view-scale-fullscreen)
r   Úget_console_scalingrI   r¬   rÂ   ÚCONSOLE_SCALE_ALWAYSÚCONSOLE_SCALE_NEVERÚCONSOLE_SCALE_FULLSCREENrR   Ú"vmwindow_sync_scaling_with_display)r„   Ú
scale_typer   r   r   r{   p  s   


ÿ

ÿ

ÿz2vmmVMWindow._console_refresh_scaling_from_settingsc                 C   sf   |  ¡ sd S d}||  d¡kr| jj}n||  d¡kr | jj}n||  d¡kr+| jj}| j |¡ d S )Nr   re  rg  rf  )r«   rI   rÂ   ri  rk  rj  r   Úset_console_scaling)r„   r˜   rm  r   r   r   ru   {  s   

z"vmmVMWindow._scaling_ui_changed_cbc                 C   sb   |  ¡ }|  d¡ |¡ | j |¡ |  d¡ | ¡ | }|  d¡  ¡ s'd}|  d¡ |¡ d S )Nrc  r"   r·   Fr!   )r«   rI   r¬   rR   Úvmwindow_set_fullscreenrÌ   )r„   r˜   Údo_fullscreenÚshow_toolbarr   r   r   rs   Š  s   z"vmmVMWindow._fullscreen_changed_cbc                 C   s8   |  ¡ sd S t|  d¡ ¡ ƒ}| j |¡ | j ¡  d S ©Nzdetails-menu-view-resizeguest)Úget_sensitiveÚintrI   r«   r   Úset_console_resizeguestrR   Ú&vmwindow_sync_resizeguest_with_display©r„   r˜   Úvalr   r   r   rv   –  s
   z&vmmVMWindow._resizeguest_ui_changed_cbc                 C   s^   | j  ¡ }| j ¡ }|  d¡}| |¡ | t|ƒ ¡ |s(|  d¡ t|ƒ¡ | j  	¡  d S rr  )
rR   Ú vmwindow_get_resizeguest_tooltipr   Úget_console_resizeguestrI   r  r  r  r¬   rv  )r„   r  rx  rI   r   r   r   r~   ž  s   



z6vmmVMWindow._console_refresh_resizeguest_from_settingsc                 C   s"   t |  d¡ ¡ ƒ}| j |¡ d S ©Nzdetails-menu-view-autoconnect)rt  rI   r«   r   Úset_console_autoconnectrw  r   r   r   rw   ©  s   z&vmmVMWindow._autoconnect_ui_changed_cbc                 C   s   | j  ¡ }|  d¡ |¡ d S r{  )r   Úget_console_autoconnectrI   r¬   )r„   rx  r   r   r   r€   ­  s   
z6vmmVMWindow._console_refresh_autoconnect_from_settingsc                 C   r  r‰   )rR   Úvmwindow_set_size_to_vm©r„   r˜   r   r   r   rt   ±  r  zvmmVMWindow._size_to_vm_cbc                 C   s   |   d¡ d¡ d S )Nrc  F)rI   r¬   r  r   r   r   rV   ´  s   z(vmmVMWindow._console_leave_fullscreen_cbc                 C   ó   |   ¡  d S r‰   )rù   r  r   r   r   rW   ¸  ó   z$vmmVMWindow._console_change_title_cbc                 C   ó   |   ¡ r
|  ¡  d S d S r‰   )r‘   r‚   r  r   r   r   rx   »  ó   ÿz vmmVMWindow._vm_state_changed_cbc                 C   r‚  r‰   )r‘   rZ  r  r   r   r   ry   ¿  rƒ  z!vmmVMWindow._resources_sampled_cbc                 C   r€  r‰   )rz   r  r   r   r   rU   Ã  r  z$vmmVMWindow._console_page_changed_cbr‰   )NN)@Ú__name__Ú
__module__Ú__qualname__r   Ú	RUN_FIRSTÚobjectÚ__gsignals__Úclassmethodr    rB   Úpropertyr   r   rJ   rk   r[   rO   r¦   rl   rc   rb   r¤   r`   rd   rj   rp   rf   rÔ   rr   rí   rù   r‚   rq   re   r  rƒ   r  r  r  r  ri   rm   rg   rh   rn   ro   r+  rZ  rä   rz   r^  r{   ru   rs   rv   r~   rw   r€   rt   rV   rW   rx   ry   rU   r   r   r   r   r      sz    
þ

q



!		
-/
r   N)Úgi.repositoryr   r   Úvirtinstr   rê   r   Ú	baseclassr   Úenginer   Údetails.consoler	   Údetails.detailsr
   Údetails.snapshotsr   rá   rM   rÖ   rÕ   r   r   r   r   r   Ú<module>   s   þ