o
    W9b'  ã                   @   sD   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 )	é    )Úlogé   )Úuiutil)ÚvmmGObjectUI)ÚvmmHostStoragec                   @   sv   e Zd Z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d„ Zdd„ ZdS )ÚvmmStorageBrowserc                 C   sd   t  | dd¡ || _d| _d | _d | _t| j| j| j| j	ƒ| _
|  ¡  | j d| ji¡ |  ¡  d S )Nzstoragebrowse.uizvmm-storage-browseFÚ"on_vmm_storage_browse_delete_event)r   Ú__init__ÚconnÚ
_first_runÚ
_finish_cbÚ_browse_reasonr   ÚbuilderÚtopwinÚ_vol_sensitive_cbÚstoragelistÚ_init_uiÚconnect_signalsÚcloseÚbind_escape_key_close)Úselfr
   © r   ú4/usr/share/virt-manager/virtManager/storagebrowse.pyr	      s   ÿÿzvmmStorageBrowser.__init__c                 C   s\   t  d¡ | jsd| _| j ¡ }t | j d¡|¡ | j	 
|¡ | j	 ¡  | jjdd d S )NzShowing storage browserTz	pool-list)Úpollpool)r   Údebugr   r
   Úget_default_poolr   Úset_list_selectionr   Úwidgetr   Úset_transient_forÚpresentÚschedule_priority_tick)r   ÚparentÚpoolr   r   r   Úshow#   s   

ÿ
zvmmStorageBrowser.showNc                 C   s*   |   ¡ rt d¡ | j ¡  | j ¡  dS )NzClosing storage browserr   )Ú
is_visibler   r   r   Úhider   r   )r   Úignore1Úignore2r   r   r   r   /   s
   


zvmmStorageBrowser.closec                 C   s   d | _ | j ¡  d | _d S ©N)r
   r   Úcleanup)r   r   r   r   Ú_cleanup6   s   

zvmmStorageBrowser._cleanupc                 C   sD  | j  d| j¡ | j  d| j¡ | j  d| j¡ |  d¡ | j j¡ | j 	d¡ | j j 	d¡ d}| j
 ¡ }| j  d¡ | ¡ |rFtdƒ}| j  d¡ |¡ t | j  d	¡d
¡ t | j  d¡d
¡ t | j  d¡d
¡ | j  d¡ d¡ | j  d¡ d¡ | j  d¡ d¡ | j  d¡ d
¡ | j  d¡ d
¡ |  | j¡ d S )Nzbrowse-clickedzvolume-chosenzcancel-clickedzstorage-alignTÚ zbrowse-localz.Cannot use local storage on remote connection.zpool-autostartFzpool-name-entryzpool-state-boxzbrowse-cancelzchoose-volumez
pool-apply)r   ÚconnectÚ_browse_clickedÚ_volume_chosenr   r   ÚaddÚtop_boxÚerrÚset_modal_defaultr
   Ú	is_remoteÚset_sensitiveÚ_Úset_tooltip_textr   Úset_grid_row_visibleÚset_visibleÚset_browse_reasonr   )r   Útooltipr3   r   r   r   r   @   s6   
ÿÿÿzvmmStorageBrowser._init_uic                 C   s
   || _ d S r(   )r   )r   Úcallbackr   r   r   Úset_finish_cbc   s   
zvmmStorageBrowser.set_finish_cbc                 C   s   | j  |¡ d S r(   )r   Úset_name_hint)r   Únamer   r   r   Úset_vm_namee   s   zvmmStorageBrowser.set_vm_namec                 C   sZ   || _ | jj | j i ¡}d}tdƒ}|r|d }|d }| j |¡ | j d¡ 	|¡ d S )NTzChoose Storage VolumeÚenable_createÚstorage_titlezvol-add)
r   ÚconfigÚbrowse_reason_dataÚgetr5   r   Ú	set_titler   r   r4   )r   ÚreasonÚdataÚallow_createÚtitler   r   r   r9   h   s   z#vmmStorageBrowser.set_browse_reasonc                 C   s   |}|   ¡ S r(   )Ú_browse_local)r   ÚsrcÚignorer   r   r   r-   y   s   z!vmmStorageBrowser._browse_clickedc                 C   s(   |}t  d|j ¡ ¡ |  | ¡ ¡ d S )NzChosen volume XML:
%s)r   r   ÚxmlobjÚget_xmlÚ_finishÚget_target_path)r   rK   ÚvolumerL   r   r   r   r.   }   s   z vmmStorageBrowser._volume_chosenc                 C   s   | j | jjkr|dkrdS dS )NÚdirFT)r   rB   ÚCONFIG_DIR_FS)r   Úfmtr   r   r   r   ‚   s   z#vmmStorageBrowser._vol_sensitive_cbc                 C   s|   d }d }d }| j j | j¡}|r |d pd }| d¡}| d¡}| jj| j|| j||d}|r<t d|¡ |  	|¡ d S d S )NÚlocal_titleÚdialog_typeÚchoose_button)rV   Úbrowse_reasonÚdialog_namerW   zBrowse local chose path=%s)
rB   rC   rD   r   r1   Úbrowse_localr
   r   r   rO   )r   rV   rY   rW   rG   Úfilenamer   r   r   rJ      s    


þþzvmmStorageBrowser._browse_localc                 C   s   | j r	|   | |¡ |  ¡  d S r(   )r   r   )r   Úpathr   r   r   rO   Ÿ   s   zvmmStorageBrowser._finish)NN)Ú__name__Ú
__module__Ú__qualname__r	   r#   r   r*   r   r<   r?   r9   r-   r.   r   rJ   rO   r   r   r   r   r      s    

#r   N)	Úvirtinstr   Úlibr   Ú	baseclassr   Úhoststorager   r   r   r   r   r   Ú<module>   s
   