U
    f»{jýe  ã                   @   s  d Z ddlZddlmZmZ ddl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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)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/ G d	d
„ d
ƒZ0G dd„ de*ƒZ1G dd„ de)ƒZ2G dd„ de ƒZ3G dd„ dee3ƒZ4d.dd„Z5G dd„ dee3ƒZ6G dd„ deƒZ7G dd„ dee3ƒZ8G dd„ de$ƒZ9G dd„ de&ƒZ:G d d!„ d!e#e:ƒZ;G d"d#„ d#e%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,e4e6e7e8e=e9e2e1ƒZAeZBdS )/z-Notebook implementation of _Renderer and GUI.é    N)ÚcontextmanagerÚnullcontext)Údisplay)ÚButtonÚDropdownÚFloatSliderÚBoundedFloatTextÚHBoxÚ	IntSliderÚIntTextÚTextÚVBoxÚIntProgressÚPlayÚCheckboxÚRadioButtonsÚHTMLÚ	AccordionÚjsdlinkÚLayoutÚSelectÚGridBoxé   )Ú_AbstractDockÚ_AbstractToolBarÚ_AbstractMenuBarÚ_AbstractStatusBarÚ_AbstractLayoutÚ_AbstractWidgetÚ_AbstractWindowÚ_AbstractMplCanvasÚ_AbstractPlaybackÚ_AbstractBrainMplCanvasÚ_AbstractMplInterfaceÚ_AbstractWidgetListÚ_AbstractActionÚ_AbstractDialogÚ_AbstractKeyPress)Ú_PyVistaRendererÚ
_close_allÚ_set_3d_viewÚ_set_3d_titlec                   @   sv   e Z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d„ Zdd„ ZdS ) Ú_FilePickeré   FTc              	   C   s€  d | _ || _|| _d| _t ¡ | _tdd�| _|| _	t
|  ¡ ttt | j¡ƒ| j	ƒ| jd�| _tdtddd�d�| _td	tddd�d�| _td
tddd�d�| _tdtddd�d�| _ttj | j| jj¡dtddd�d�| _tdtddd�d�| _| j | j¡ | j | j¡ | j | j¡ | j | j¡ | j  | j!¡ t"t#| jt$dd�| jgƒ| jt#t$dd�| j| j| j| jgƒgƒ| _%d S )NTÚauto)Úwidth)ÚoptionsÚrowsÚlayoutZOpenzauto 1 auto)Zflexr/   )Údescriptionr2   r   ZCancelz
chevron-up)Úiconr2   z1 1 auto)ÚvalueÚdisabledr2   Ú )r5   r2   zLook in:)r5   z	File name)&Ú	_callbackÚ_directory_onlyÚ_ignore_dotfilesÚ_empty_selectionÚosÚgetcwdÚ_selected_dirr   Z_item_layoutÚ_nb_rowsr   Ú_get_selector_optionsÚminÚlenÚlistdirÚ_file_selectorr   Z_open_buttonZ_select_buttonZ_cancel_buttonZ_parent_buttonr   ÚpathÚjoinr5   Ú
_selectionÚ	_filenameÚon_clickÚ_parent_button_clickedÚ_open_button_clickedÚ_select_button_clickedÚ_cancel_button_clickedÚobserveÚ_update_pathr   r	   r   Ú_widget)Úselfr1   Zdirectory_onlyZignore_dotfiles© rR   úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/viz/backends/_notebook.pyÚ__init__   sx    
ý
þ
þ
þ
þ ÿ
ü
þ  ÿ   þûz_FilePicker.__init__c                 C   s”   t  | j¡}| jr<tƒ }|D ]}|d dkr| |¡ q|}| jrxtƒ }|D ]&}t j t j 	| j|¡¡rL| |¡ qL|}|sŠdg}d| _
nd| _
|S )Nr   Ú.r7   TF)r<   rC   r>   r:   ÚlistÚappendr9   rE   ÚisdirrF   r;   )rQ   r0   ÚtmpÚelrR   rR   rS   r@   T   s$    z!_FilePicker._get_selector_optionsc                 C   sP   |   ¡ | j_ttt | j¡ƒ| jƒ| j_	tj
 | j| jj¡| j_| jj| j_d S ©N)r@   rD   r0   rA   rB   r<   rC   r>   r?   r1   rE   rF   r5   rG   rH   ©rQ   rR   rR   rS   Ú_update_selector_optionsi   s     ÿ ÿz$_FilePicker._update_selector_optionsc                 C   s   |   ¡  d| jj_d S )NÚblock)r]   rP   r2   r   r\   rR   rR   rS   Úshowr   s    z_FilePicker.showc                 C   s   d| j j_d S )NÚnone)rP   r2   r   r\   rR   rR   rS   Úhidev   s    z_FilePicker.hidec                 C   s
   || _ d S r[   )r9   ©rQ   ÚstaterR   rR   rS   Úset_directory_onlyy   s    z_FilePicker.set_directory_onlyc                 C   s
   || _ d S r[   )r:   rb   rR   rR   rS   Úset_ignore_dotfiles|   s    z_FilePicker.set_ignore_dotfilesc                 C   s
   || _ d S r[   )r8   )rQ   ÚcallbackrR   rR   rS   Úconnect   s    z_FilePicker.connectc                 C   sP   | j r
d S tj | jj¡rL| jj| _|  ¡ | j_	t
tt | j¡ƒ| jƒ| j_d S r[   )r;   r<   rE   rX   rG   r5   r>   r@   rD   r0   rA   rB   rC   r?   r1   ©rQ   ÚbuttonrR   rR   rS   rK   ‚   s    
 ÿz _FilePicker._open_button_clickedc                 C   sD   | j r
d S tj | j| jj¡}| jd k	r8|  |¡ d | _|  ¡  d S r[   )	r;   r<   rE   rF   r>   rH   r5   r8   ra   )rQ   ri   ÚresultrR   rR   rS   rL   ‹   s    

z"_FilePicker._select_button_clickedc                 C   s   d | _ |  ¡  d S r[   )r8   ra   rh   rR   rR   rS   rM   •   s    z"_FilePicker._cancel_button_clickedc                 C   s    t j | j¡\| _}|  ¡  d S r[   )r<   rE   Úsplitr>   r]   )rQ   ri   Ú_rR   rR   rS   rJ   ™   s    z"_FilePicker._parent_button_clickedc                 C   s(   t j | j| jj¡| j_| jj| j_d S r[   )r<   rE   rF   r>   rD   r5   rG   rH   )rQ   ZchangerR   rR   rS   rO   �   s
     ÿz_FilePicker._update_pathN)r-   FT)Ú__name__Ú
__module__Ú__qualname__rT   r@   r]   r_   ra   rd   re   rg   rK   rL   rM   rJ   rO   rR   rR   rR   rS   r,      s   
8		
r,   c                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	Ú_IpyKeyPressNc                 C   s   d S r[   rR   )rQ   ÚwidgetrR   rR   rS   Ú_keypress_initialize¥   s    z!_IpyKeyPress._keypress_initializec                 C   s   d S r[   rR   )rQ   Úshortcutrf   rR   rR   rS   Ú_keypress_add¨   s    z_IpyKeyPress._keypress_addc                 C   s   d S r[   rR   ©rQ   rs   rR   rR   rS   Ú_keypress_trigger«   s    z_IpyKeyPress._keypress_trigger)N)rm   rn   ro   rr   rt   rv   rR   rR   rR   rS   rp   ¤   s   
rp   c                   @   s    e Zd Zdg dddœdd„ZdS )Ú
_IpyDialogÚWarningTN)r4   ÚbuttonsÚmodalÚwindowc          	      C   s   d S r[   rR   )	rQ   ÚtitleÚtextZ	info_textrf   r4   ry   rz   r{   rR   rR   rS   Ú_dialog_create°   s    z_IpyDialog._dialog_create)rm   rn   ro   r~   rR   rR   rR   rS   rw   ¯   s
      ÿrw   c                   @   s0   e Zd Zdd„ Zddddœdd„Zdd	d
„ZdS )Ú
_IpyLayoutc                 C   s
   || _ d S r[   )Ú_layout_max_width)rQ   Ú	max_widthrR   rR   rS   Ú_layout_initialize¶   s    z_IpyLayout._layout_initializer   N)ÚrowÚcolc          
      C   s¦   d|j _t|tƒsd|j _t|tƒr0|jd }n|}t|jƒ}| |¡ t	|ƒ|_| j
d k	r¢t|tƒr¢|j}t|ƒdkr¢t| j
t|ƒ ƒ}|D ]}	|› d�|	j _qŽd S )Nz2px 0px 2px 0pxZ0pxr   Úpx)r2   ÚmarginÚ
isinstancer   Ú	min_widthr   ÚchildrenrV   rW   Útupler€   r	   rB   Úintr/   )
rQ   r2   rq   Ústretchrƒ   r„   Úboxr‰   r/   ÚchildrR   rR   rS   Ú_layout_add_widget¹   s    




z_IpyLayout._layout_add_widgetÚverticalc                 C   s6   |dkrt ƒ }n"|dkr tƒ }n|dks,t‚tƒ }|S )Nr�   Ú
horizontalÚgrid)r   r	   ÚAssertionErrorr   )rQ   Zorientationr2   rR   rR   rS   Ú_layout_createÍ   s    z_IpyLayout._layout_create)r   )r�   )rm   rn   ro   r‚   r�   r”   rR   rR   rR   rS   r   µ   s    ÿr   c                   @   s  e Zd Zd4dd„Zdd„ Zdd	„ Zd
d„ Zd5dd„Zd6dd„Zddddœdd„Z	dddddœdd„Z
dddœdd„Zdddddœdd„Zdddœd d!„Zdddddd"œd#d$„Zdddd%œd&d'„Zddd(œd)d*„Zddd+œd,d-„Zddd.œd/d0„Zdddddddd1œd2d3„ZdS )7Ú_IpyDockNÚControlsÚleftc                 C   s^   | j d krtƒ | _ tƒ }d| _| | _| _| j› d�| jj_|  | j¡ | j| jf| j |< d S )Ni.  r…   )	Ú_docksÚdictr   Z_dock_widthZ_dockÚ_dock_layoutr2   r/   r‚   )rQ   r{   ÚnameZarear�   Zcurrent_dockrR   rR   rS   Ú_dock_initializeÙ   s    
z_IpyDock._dock_initializec                 C   s   d S r[   rR   r\   rR   rR   rS   Ú_dock_finalizeä   s    z_IpyDock._dock_finalizec                 C   s   d| j j_d S ©NÚvisible©rš   r2   Ú
visibilityr\   rR   rR   rS   Ú
_dock_showç   s    z_IpyDock._dock_showc                 C   s   d| j j_d S ©NZhiddenr    r\   rR   rR   rS   Ú
_dock_hideê   s    z_IpyDock._dock_hidec                 C   s   d S r[   rR   )rQ   r2   rR   rR   rS   Ú_dock_add_stretchí   s    z_IpyDock._dock_add_stretchTc                 C   s   |r
t ƒ S tƒ S r[   )r   r	   )rQ   r�   rR   rR   rS   Ú_dock_add_layoutð   s    z_IpyDock._dock_add_layoutF)Úalignr2   Ú
selectablec                C   s2   |d kr| j n|}t|dd�}|  ||¡ t|ƒS ©NT)r5   r6   )rš   r   r�   Ú
_IpyWidget)rQ   r5   r§   r2   r¨   rq   rR   rR   rS   Ú_dock_add_labeló   s    z_IpyDock._dock_add_labelÚ
pushbutton)Ústyler4   Útooltipr2   c          	         sv   |d kr| j n|}tƒ }|dkr(||d< |d k	r8||d< tf |Ž}| ‡ fdd„¡ |d k	rb||_|  ||¡ t|ƒS )Nr¬   r3   r®   c                    s   ˆ ƒ S r[   rR   ©Úx©rf   rR   rS   Ú<lambda>  ó    z+_IpyDock._dock_add_button.<locals>.<lambda>)rš   r™   r   rI   r4   r�   rª   )	rQ   r›   rf   r­   r4   r®   r2   Úkwargsrq   rR   r±   rS   Ú_dock_add_buttonû   s    
z_IpyDock._dock_add_button)r2   Úcompactc                C   sL   |d kr| j n|}|d k	rH|  | ¡}| j|| |d� |  ||¡ |}|S )N)r5   r§   r2   )rš   r¦   r«   r�   )rQ   r›   r2   r¶   ÚhlayoutrR   rR   rS   Ú_dock_named_layout  s      ÿz_IpyDock._dock_named_layout)r¶   Údoubler®   r2   c                C   sZ   | j |||d�}|rtnt}	|	||d |d dd�}
|
jt|ƒdd� |  ||
¡ t|
ƒS )N©r›   r2   r¶   r   r   F)r5   rA   ÚmaxZreadoutr5   ©Únames)r¸   r   r
   rN   Ú_generate_callbackr�   rª   )rQ   r›   r5   Úrngrf   r¶   r¹   r®   r2   Úklassrq   rR   rR   rS   Ú_dock_add_slider  s      ÿüz_IpyDock._dock_add_slider)r®   r2   c                C   sR   |d kr| j n|}t||ddd�}t|gƒ}|jt|ƒdd� |  ||¡ t|ƒS )NF)r5   r3   Úindentr6   r5   r¼   )rš   r   r	   rN   r¾   r�   rª   )rQ   r›   r5   rf   r®   r2   rq   ZhboxrR   rR   rS   Ú_dock_add_check_box&  s    ü
z_IpyDock._dock_add_check_box)r¶   r¹   Ústepr®   r2   c                C   sf   | j ||	|d�}	|rtnt}
|
||d |d d�}|d k	r@||_|jt|ƒdd� |  |	|¡ t|ƒS )Nrº   r   r   )r5   rA   r»   r5   r¼   )r¸   r   r   rÄ   rN   r¾   r�   rª   )rQ   r›   r5   r¿   rf   r¶   r¹   rÄ   r®   r2   rÀ   rq   rR   rR   rS   Ú_dock_add_spin_box4  s       ÿýz_IpyDock._dock_add_spin_box)r¶   r®   r2   c          	      C   sB   | j |||d�}t||d�}|jt|ƒdd� |  ||¡ t|ƒS )Nrº   ©r5   r0   r5   r¼   )r¸   r   rN   r¾   r�   rª   )	rQ   r›   r5   r¿   rf   r¶   r®   r2   rq   rR   rR   rS   Ú_dock_add_combo_boxE  s      ÿþz_IpyDock._dock_add_combo_box)r�   r2   c                C   sF   |d kr| j n|}t||dd�}|jt|ƒdd� |  ||¡ t|ƒS )NF)r0   r5   r6   r5   r¼   )rš   r   rN   r¾   r�   Ú_IpyWidgetList)rQ   r5   r¿   rf   r�   r2   rq   rR   rR   rS   Ú_dock_add_radio_buttonsQ  s    ýz _IpyDock._dock_add_radio_buttons)Úcollapser2   c                C   s~   |d kr| j n|}|d kr2ttd| d ƒgƒ}n<t|tƒs@t‚tƒ }t|gƒ}| d|¡ |rhd |_nd|_|  	||¡ |S )Nz<strong>z	</strong>r   )
rš   r   r   r‡   Úboolr“   r   Ú	set_titleZselected_indexr�   )rQ   r›   rÊ   r2   r·   ZvboxrR   rR   rS   Ú_dock_add_group_box^  s    
z_IpyDock._dock_add_group_box)rf   r2   c                C   sL   |d kr| j n|}t||d�}|d k	r8|jt|ƒdd� |  ||¡ t|ƒS )N©r5   Úplaceholderr5   r¼   )rš   r   rN   r¾   r�   rª   )rQ   r›   r5   rÏ   rf   r2   rq   rR   rR   rS   Ú_dock_add_textn  s    z_IpyDock._dock_add_text)ÚfilterÚinitial_directoryÚsaveÚis_directoryr4   r®   r2   c                   sX   |
d krˆj n|
}
‡ ‡‡fdd„}|r4tddd�}ntƒ }ˆjf |||	|
dœ|—Ž}|S )Nc                      s&   ˆj  ˆ¡ ˆj  ˆ ¡ ˆj  ¡  d S r[   )Ú_file_pickerrd   rg   r_   rR   ©ÚfuncrÔ   rQ   rR   rS   rf   }  s    z0_IpyDock._dock_add_file_button.<locals>.callbackZ
toolbuttonÚfolder)r­   r4   )r›   rf   r®   r2   )rš   r™   rµ   )rQ   r›   Údescr×   rÑ   rÒ   rÓ   rÔ   r4   r®   r2   rf   r´   rq   rR   rÖ   rS   Ú_dock_add_file_buttonw  s    üûz_IpyDock._dock_add_file_button)Nr–   r—   N)N)T)rm   rn   ro   rœ   r�   r¢   r¤   r¥   r¦   r«   rµ   r¸   rÁ   rÃ   rÅ   rÇ   rÉ   rÍ   rÐ   rÚ   rR   rR   rR   rS   r•   Ø   sh       ÿ


  ÿ	  þ  þÿ   þ ÿÿÿ
     þr•   Fc                    s   ‡ ‡fdd„}|S )Nc                    s0   d| kr| d n| d }ˆ ˆr&t |ƒn|ƒ d S )NÚnewÚold)Úfloat)Údatar5   ©rf   Úto_floatrR   rS   r×   ‘  s    z _generate_callback.<locals>.funcrR   )rf   rà   r×   rR   rß   rS   r¾   �  s    r¾   c                   @   sZ   e Zd Zddd„Zdddœdd„Zdd	„ Zd
d„ Zdd„ Zddœdd„Zddœdd„Z	dS )Ú_IpyToolBarÚdefaultNc                 C   s$   t ƒ | _tƒ  | _| _|  d ¡ d S r[   )r™   Úactionsr	   Ú	_tool_barÚ_tool_bar_layoutr‚   )rQ   r›   r{   rR   rR   rS   Ú_tool_bar_initialize˜  s    z _IpyToolBar._tool_bar_initialize)Ú	icon_namers   c                   sd   |d kr|n|}| j | }|d kr&d S t||d�}| ‡ fdd„¡ |  | j|¡ t|ƒ| j|< d S )N)r®   r4   c                    s   ˆ ƒ S r[   rR   r¯   ©r×   rR   rS   r²   ¤  r³   z2_IpyToolBar._tool_bar_add_button.<locals>.<lambda>)Ú_iconsr   rI   r�   rå   Ú
_IpyActionrã   )rQ   r›   rÙ   r×   rç   rs   r4   rq   rR   rè   rS   Ú_tool_bar_add_button�  s    
z _IpyToolBar._tool_bar_add_buttonc                 C   s   | j |  | j| ¡ d S r[   )rã   Úset_iconré   )rQ   r›   rç   rR   rR   rS   Ú_tool_bar_update_button_icon¨  s    z(_IpyToolBar._tool_bar_update_button_iconc                 C   s,   t ||d�}|  | j|¡ t|ƒ| j|< d S )NrÎ   )r   r�   rå   rê   rã   )rQ   r›   r5   rÏ   rq   rR   rR   rS   Ú_tool_bar_add_text«  s    z_IpyToolBar._tool_bar_add_textc                 C   s   d S r[   rR   r\   rR   rR   rS   Ú_tool_bar_add_spacer°  s    z _IpyToolBar._tool_bar_add_spacer)rs   c                   s:   ‡ ‡‡fdd„}ˆj ˆ› d�d dd� ˆjˆ||d� d S )Nc                     s.   ˆj ˆ› d� j} ˆ t| ƒdkr$d n| ƒ d S )NÚ_fieldr   )rã   r5   rB   )Úfname©r×   r›   rQ   rR   rS   rf   ´  s    z7_IpyToolBar._tool_bar_add_file_button.<locals>.callbackrð   zType a file name)r›   r5   rÏ   ©r›   rÙ   r×   )rî   rë   )rQ   r›   rÙ   r×   rs   rf   rR   rò   rS   Ú_tool_bar_add_file_button³  s    ýýz%_IpyToolBar._tool_bar_add_file_buttonc                C   s.   t dd�}|  | j|¡ t|ƒ| j|< t|ƒS )Niô  )Úinterval)r   r�   rå   rê   rã   rª   )rQ   r›   rÙ   r×   rs   rq   rR   rR   rS   Ú_tool_bar_add_play_buttonÂ  s    
z%_IpyToolBar._tool_bar_add_play_button)râ   N)
rm   rn   ro   ræ   rë   rí   rî   rï   rô   rö   rR   rR   rR   rS   rá   —  s   
ÿrá   c                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	Ú_IpyMenuBarNc                 C   s4   t ƒ | _t ƒ | _t ƒ | _tƒ  | _| _|  d ¡ d S r[   )r™   Ú_menusÚ_menu_actionsÚ_menu_desc2buttonr	   Ú	_menu_barÚ_menu_bar_layoutr‚   ©rQ   r{   rR   rR   rS   Ú_menu_initializeÊ  s
    z_IpyMenuBar._menu_initializec                    sZ   t ˆ ˆ gd�‰ˆˆjˆ< tƒ ˆjˆ< ‡ ‡‡‡fdd„}ˆjt|ƒdd� ˆ ˆjˆ¡ d S )NrÆ   c                    s@   | ˆ krd S ˆj |  }|ˆjˆ kr6ˆjˆ |  ¡  ˆ ˆ_d S r[   )rú   rù   Útriggerr5   )Z
input_descZbutton_name©rÙ   r›   rQ   rq   rR   rS   rf   Ö  s    
z/_IpyMenuBar._menu_add_submenu.<locals>.callbackr5   r¼   )r   rø   r™   rù   rN   r¾   r�   rü   )rQ   r›   rÙ   rf   rR   r   rS   Ú_menu_add_submenuÑ  s    
z_IpyMenuBar._menu_add_submenuc                 C   sD   | j | }t|jƒ}| |¡ ||_t|ƒ| j| |< || j|< d S r[   )rø   rV   r0   rW   rê   rù   rú   )rQ   Z	menu_namer›   rÙ   r×   Zmenur0   rR   rR   rS   Ú_menu_add_buttonà  s    


z_IpyMenuBar._menu_add_button)N)rm   rn   ro   rþ   r  r  rR   rR   rR   rS   r÷   É  s   
r÷   c                   @   s6   e Zd Zddd„Zddœdd„Zddd	„Zd
d„ ZdS )Ú_IpyStatusBarNc                 C   s   t ƒ | _|  d ¡ d S r[   )r	   Ú_status_barr‚   rý   rR   rR   rS   Ú_status_bar_initializeë  s    z$_IpyStatusBar._status_bar_initializer   )rŒ   c                C   s"   t |dd�}|  | j|¡ t|ƒS r©   )r   r�   r  rª   )rQ   r5   rŒ   rq   rR   rR   rS   Ú_status_bar_add_labelï  s    z#_IpyStatusBar._status_bar_add_labelc                 C   s   t ƒ }|  | j|¡ t|ƒS r[   )r   r�   r  rª   )rQ   rŒ   rq   rR   rR   rS   Ú_status_bar_add_progress_barô  s    z*_IpyStatusBar._status_bar_add_progress_barc                 C   s   d S r[   rR   r\   rR   rR   rS   Ú_status_bar_updateù  s    z _IpyStatusBar._status_bar_update)N)r   )rm   rn   ro   r  r  r  r  rR   rR   rR   rS   r  ê  s   

r  c                   @   s   e Zd Zdd„ ZdS )Ú_IpyPlaybackc           	      C   sN   |j }|d |_|d |_||_|j }t|df|dfƒ t|df|dfƒ d S )Nr   r   r5   )rP   rA   r»   r5   r   )	rQ   r×   Útimeoutr5   r¿   Ztime_widgetZplay_widgetÚplayZsliderrR   rR   rS   Ú_playback_initializeþ  s    

z!_IpyPlayback._playback_initializeN)rm   rn   ro   r  rR   rR   rR   rS   r	  ý  s   r	  c                   @   s   e Zd Zdd„ ZdS )Ú_IpyMplInterfacec                 C   s.   ddl m}m} || jƒ| _|| jdƒ| _d S )Nr   )ÚFigureCanvasNbAggÚFigureManager)Z!matplotlib.backends.backend_nbaggr  r  ZfigZcanvasÚmanager)rQ   r  r  rR   rR   rS   Ú_mpl_initialize
  s    z _IpyMplInterface._mpl_initializeN)rm   rn   ro   r  rR   rR   rR   rS   r  	  s   r  c                       s   e Zd Z‡ fdd„Z‡  ZS )Ú_IpyMplCanvasc                    s   t ƒ  |||¡ |  ¡  d S r[   )ÚsuperrT   r  ©rQ   r/   ÚheightÚdpi©Ú	__class__rR   rS   rT     s    z_IpyMplCanvas.__init__©rm   rn   ro   rT   Ú__classcell__rR   rR   r  rS   r    s   r  c                       s   e Zd Z‡ fdd„Z‡  ZS )Ú_IpyBrainMplCanvasc                    s&   t ƒ  ||||¡ |  ¡  |  ¡  d S r[   )r  rT   r  Ú_connect)rQ   Úbrainr/   r  r  r  rR   rS   rT     s    z_IpyBrainMplCanvas.__init__r  rR   rR   r  rS   r    s   r  c                       s¢   e Zd Zddddœ‡ fdd„
Zdd„ Zdd	œ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edd„ ƒZd d!„ Zd"d#„ Z‡  ZS )%Ú
_IpyWindowNF)r{   Úcentral_layoutÚ
fullscreenc                   s   t ƒ  ¡  |  ¡  d S r[   )r  Ú_window_initializeÚ_window_load_icons)rQ   r{   r  r   r  rR   rS   r!    s    
z_IpyWindow._window_initializec                 C   s|   d| j d< d | j d< d | j d< d| j d< d| j d< d	| j d
< d| j d< d| j d< d| j d< d| j d< d| j d< d| j d< d S )NÚquestionÚhelpr  ÚpauseÚhistoryÚresetÚmagicÚscaleZtrashÚclearzvideo-cameraZmovieZreplayZrestoreÚcameraÚ
screenshotÚeyeZvisibility_onZvisibility_offrØ   )ré   r\   rR   rR   rS   r"  %  s    










z_IpyWindow._window_load_iconsT)Úafterc                C   s   d S r[   rR   )rQ   r×   r.  rR   rR   rS   Ú_window_close_connect4  s    z _IpyWindow._window_close_connectc                 C   s   d S r[   rR   )rQ   r.  rR   rR   rS   Ú_window_close_disconnect7  s    z#_IpyWindow._window_close_disconnectc                 C   s   dS )Né`   rR   r\   rR   rR   rS   Ú_window_get_dpi:  s    z_IpyWindow._window_get_dpic                 C   s
   | j jjS r[   )ÚfigureÚplotterZwindow_sizer\   rR   rR   rS   Ú_window_get_size=  s    z_IpyWindow._window_get_sizec                 C   s   t |||ƒS r[   )r  r  rR   rR   rS   Ú_window_get_simple_canvas@  s    z$_IpyWindow._window_get_simple_canvasc                 C   s:   |   |¡\}}|| _|| _|| _t||||  ¡ ƒ| _| jS r[   )Z_window_get_mplcanvas_sizeZ_interactor_fractionZ_show_tracesZ_separate_canvasr  r2  Z
_mplcanvas)rQ   r  Zinteractor_fractionZshow_tracesZseparate_canvasÚwÚhrR   rR   rS   Ú_window_get_mplcanvasC  s       ÿz _IpyWindow._window_get_mplcanvasc                 C   s   d S r[   rR   r\   rR   rR   rS   Ú_window_adjust_mplcanvas_layoutM  s    z*_IpyWindow._window_adjust_mplcanvas_layoutc                 C   s   d S r[   rR   r\   rR   rR   rS   Ú_window_get_cursorP  s    z_IpyWindow._window_get_cursorc                 C   s   d S r[   rR   )rQ   ÚcursorrR   rR   rS   Ú_window_set_cursorS  s    z_IpyWindow._window_set_cursorc                 C   s   d S r[   rR   )rQ   r›   rR   rR   rS   Ú_window_new_cursorV  s    z_IpyWindow._window_new_cursorc                 c   s
   d V  d S r[   rR   r\   rR   rR   rS   Ú_window_ensure_minimum_sizesY  s    z'_IpyWindow._window_ensure_minimum_sizesc                 C   s   d S r[   rR   )rQ   ÚthemerR   rR   rS   Ú_window_set_theme]  s    z_IpyWindow._window_set_themec                 C   s   d S r[   rR   r\   rR   rR   rS   Ú_window_create`  s    z_IpyWindow._window_create)T)rm   rn   ro   r!  r"  r/  r0  r2  r5  r6  r9  r:  r;  r=  r>  r   r?  rA  rB  r  rR   rR   r  rS   r    s&     ÿ


r  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
rÈ   c                 C   sV   || _ t| j tƒr t| j ƒ| _n2tƒ | _| j D ]"}t|tƒsDt|ƒ}| j |¡ q.d S r[   )Ú_srcr‡   r   rª   Ú_widgetsrV   rW   )rQ   Úsrcrq   rR   rR   rS   rT   f  s    

z_IpyWidgetList.__init__c                 C   s4   t | jtƒr| j |¡ n| jD ]}| |¡ q d S r[   )r‡   rC  r   rD  Úset_enabled)rQ   rc   rq   rR   rR   rS   rF  q  s    
z_IpyWidgetList.set_enabledc                 C   s,   t | jtƒr| jjj| S | j|  ¡ S d S r[   )r‡   rC  r   rD  rP   r0   Ú	get_value)rQ   ÚidxrR   rR   rS   rG  x  s    z_IpyWidgetList.get_valuec                 C   s.   t | jtƒr| j |¡ n| j|  |¡ d S r[   )r‡   rC  r   rD  Ú	set_value)rQ   rH  r5   rR   rR   rS   rI    s    z_IpyWidgetList.set_valueN)rm   rn   ro   rT   rF  rG  rI  rR   rR   rR   rS   rÈ   e  s   rÈ   c                   @   sf   e Z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d„Z
dd„ Zdd„ Zdd„ ZdS )rª   c                 C   s$   t | jtƒr| j ¡  n|| j_d S r[   )r‡   rP   r   Úclickr5   )rQ   r5   rR   rR   rS   rI  ‡  s    z_IpyWidget.set_valuec                 C   s   | j jS r[   )rP   r5   r\   rR   rR   rS   rG  �  s    z_IpyWidget.get_valuec                 C   s   |d | j _|d | j _d S )Nr   r   )rP   rA   r»   )rQ   r¿   rR   rR   rS   Ú	set_range�  s    z_IpyWidget.set_rangec                 C   s   d| j j_d S rž   ©rP   r2   r¡   r\   rR   rR   rS   r_   ”  s    z_IpyWidget.showc                 C   s   d| j j_d S r£   rL  r\   rR   rR   rS   ra   —  s    z_IpyWidget.hidec                 C   s   | | j _d S r[   ©rP   r6   rb   rR   rR   rS   rF  š  s    z_IpyWidget.set_enabledc                 C   s
   | j j S r[   rM  r\   rR   rR   rS   Ú
is_enabled�  s    z_IpyWidget.is_enabledTc                 C   s   d S r[   rR   )rQ   ZrepaintrR   rR   rS   Úupdate   s    z_IpyWidget.updatec                 C   s   t | jdƒst‚| jjS ©Nr®   ©ÚhasattrrP   r“   r®   r\   rR   rR   rS   Úget_tooltip£  s    z_IpyWidget.get_tooltipc                 C   s   t | jdƒst‚|| j_d S rP  rQ  )rQ   r®   rR   rR   rS   Úset_tooltip§  s    z_IpyWidget.set_tooltipc                 C   s&   |  ¡ D ]\}}t| jj||ƒ qd S r[   )ÚitemsÚsetattrrP   r2   )rQ   r­   ÚkeyÚvalrR   rR   rS   Ú	set_style«  s    z_IpyWidget.set_styleN)T)rm   rn   ro   rI  rG  rK  r_   ra   rF  rN  rO  rS  rT  rY  rR   rR   rR   rS   rª   †  s   
rª   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )rê   c                 C   s"   t | jƒr|  ¡  n
| j ¡  d S r[   )ÚcallableÚ_actionrJ  r\   rR   rR   rS   rÿ   ±  s    

z_IpyAction.triggerc                 C   s   || j _d S r[   )r[  r4   )rQ   r4   rR   rR   rS   rì   ·  s    z_IpyAction.set_iconc                 C   s   d S r[   rR   ru   rR   rR   rS   Úset_shortcutº  s    z_IpyAction.set_shortcutN)rm   rn   ro   rÿ   rì   r\  rR   rR   rR   rS   rê   °  s   rê   c                       s8   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Z‡  ZS )
Ú	_RendererÚnotebookc                    sV   d | _ d | _d | _d | _tdd�| _d|d< | dd¡}tƒ j||Ž | j	|d� d S )Né
   )r1   Tr^  r   F)r   )
r˜   rû   rä   r  r,   rÕ   Úpopr  rT   r!  )rQ   Úargsr´   r   r  rR   rS   rT   Ã  s    z_Renderer.__init__c                 C   s   | j jd k	r| j j ¡  d S r[   )r3  r   Zupdate_canvasr\   rR   rR   rS   Ú_updateÎ  s    z_Renderer._updatec                 C   s(   |   ¡  | jdd| jd� t| jƒ d S )Nr,  zTake a screenshotró   )ræ   rô   r,  r   rä   r\   rR   rR   rS   Ú_display_default_tool_barÒ  s    ýz#_Renderer._display_default_tool_barc                 C   sð   | j d k	rt| j ƒ | jd k	r*t| jƒ n|  ¡  | jjddd�}d |j_tƒ }| j	d k	rxd| j	krx| 
| j	d d ¡ | 
|¡ | j	d k	rªd| j	krª| 
| j	d d ¡ tt|ƒƒ || j_| jd k	rÒt| jƒ | j ¡  t| jjƒ |  ¡ S )NZ
ipyvtklinkT)Zjupyter_backendZreturn_viewerr—   r   Úright)rû   r   rä   rc  r4  r_   r2   r/   rV   r˜   rW   r	   r3  r  rÕ   ra   rP   Zscene)rQ   ZviewerZrendering_rowrR   rR   rS   r_   Û  s.    


 ÿ



z_Renderer.show)	rm   rn   ro   Ú_kindrT   rb  rc  r_   r  rR   rR   r  rS   r]  ¾  s
   	r]  )F)CÚ__doc__r<   Ú
contextlibr   r   ÚIPython.displayr   Ú
ipywidgetsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Z	_abstractr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   Z_pyvistar(   r)   r*   r+   r,   rp   rw   r   r•   r¾   rá   r÷   r  r	  r  r  r  r  rÈ   rª   rê   r]  Z_testing_contextrR   rR   rR   rS   Ú<module>   sB   TD 
# 9
2!G!*   þ;