U
    Fvf                     @   s   d dl Z d dlZd dlmZmZ d dlmZ ddlmZ ddl	m
Z
 d dlmZmZmZmZmZmZ d dlmZ d d	lmZ G d
d dejeZG dd de
ejeZG dd dejeZG dd dejeZejG dd deZdS )    N)_apicbook)Gcf   )_macosx)FigureCanvasAgg)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2ResizeEvent	TimerBase)Figure)SubplotToolc                   @   s   e Zd ZdZdS )TimerMacz6Subclass of `.TimerBase` using CFRunLoop timer events.N)__name__
__module____qualname____doc__ r   r   F/tmp/pip-unpacked-wheel-7vhvci0g/matplotlib/backends/backend_macosx.pyr      s   r   c                       sl   e Zd ZdZeZedd Z fddZ	 fddZ
dd	 Zd
d Zdd Zd fdd	Zdd Z  ZS )FigureCanvasMacmacosxc                 C   s   t S N)FigureManagerMacclsr   r   r   <lambda>$       zFigureCanvasMac.<lambda>c                    s   t  j|d d| _d| _d S )N)figureF)super__init___draw_pending_is_drawing)selfr   	__class__r   r   r!   &   s    zFigureCanvasMac.__init__c              	      s:   | j r
dS tj| dd t   W 5 Q R X |   dS )z/Render the figure and update the macosx canvas.NT)r#   )r#   r   Z_setattr_cmr    drawupdater$   r%   r   r   r'   +   s
    zFigureCanvasMac.drawc                 C   s.   t | dds*t | dds*d| _| | j d S )Nr"   Fr#   T)getattrr"   _single_shot_timer
_draw_idler)   r   r   r   	draw_idle5   s
    
zFigureCanvasMac.draw_idlec                 C   s.   dd }| j dd}|||| |  dS )z/Add a single shot timer with the given callbackc                 S   s   |   ~d S r   r   )callbacktimerr   r   r   callback_funcC   s    z9FigureCanvasMac._single_shot_timer.<locals>.callback_funcr   )intervalN)Z	new_timerZadd_callbackstart)r$   r.   r0   r/   r   r   r   r+   >   s    z"FigureCanvasMac._single_shot_timerc              	   C   s:   |   ( | jsW 5 Q R  dS d| _|   W 5 Q R X dS )a	  
        Draw method for singleshot timer

        This draw method can be added to a singleshot timer, which can
        accumulate draws while the eventloop is spinning. This method will
        then only draw the first time and short-circuit the others.
        NF)Z_idle_draw_cntxr"   r'   r)   r   r   r   r,   J   s
    
zFigureCanvasMac._draw_idleNc                    s   t  | |   d S r   )r    blitr(   )r$   Zbboxr%   r   r   r3   Z   s    zFigureCanvasMac.blitc                 C   sJ   | j j| j }|| }|| }| j j||dd td|   |   d S )NF)ZforwardZresize_event)r   ZdpiZdevice_pixel_ratioZset_size_inchesr   Z_processr-   )r$   widthheightZscaler   r   r   resize_   s    zFigureCanvasMac.resize)N)r   r   r   Zrequired_interactive_frameworkr   Z
_timer_clsr   ZclasspropertyZmanager_classr!   r'   r-   r+   r,   r3   r6   __classcell__r   r   r%   r   r      s   
	r   c                   @   sB   e Zd Zdd Zdd Zdd Zdd Zejd	d
ddd Z	dS )NavigationToolbar2Macc                    s^   t d ttj \}}}}tj| |t fdd|D tdd |D  t| | d S )NZimagesc                 3   s&   | ]}|d k	rt  | d V  qd S )Nz.pdf)str).0Z
image_nameZ	data_pathr   r   	<genexpr>p   s    z1NavigationToolbar2Mac.__init__.<locals>.<genexpr>c                 s   s   | ]}|d k	r|V  qd S r   r   )r:   Ztooltipr   r   r   r<   r   s      )r   _get_data_pathzipr   Z	toolitemsr   r!   tuple)r$   canvas_ZtooltipsZimage_namesr   r;   r   r!   k   s    
 zNavigationToolbar2Mac.__init__c                 C   s&   | j t|t|t|t| d S r   )r@   Zset_rubberbandint)r$   eventZx0Zy0x1y1r   r   r   draw_rubberbandu   s    z%NavigationToolbar2Mac.draw_rubberbandc                 C   s   | j   d S r   )r@   remove_rubberbandr)   r   r   r   rG   x   s    z'NavigationToolbar2Mac.remove_rubberbandc                 G   s`   t jtjd }td|| j }|d kr2d S tjd rNt j	|tjd< | jj
| d S )Nzsavefig.directoryzSave the figure)ospath
expandusermplrcParamsr   Zchoose_save_filer@   Zget_default_filenamedirnamer   Zsavefig)r$   args	directoryfilenamer   r   r   save_figure{   s    
z!NavigationToolbar2Mac.save_figure3.6zconfigure_subplots())alternativec                 C   s0   t dd}t|}|jdd t| jj|}|S )N)      )Zfigsizeg?)top)r   r   Zsubplots_adjustr   r@   r   )r$   Ztoolfigr@   Z_toolr   r   r   prepare_configure_subplots   s
    
z0NavigationToolbar2Mac.prepare_configure_subplotsN)
r   r   r   r!   rF   rG   rQ   r   
deprecatedrW   r   r   r   r   r8   i   s   
r8   c                   @   sF   e Zd ZeZdd Zdd Zeddd Z	e
dd	 Zd
d ZdS )r   c                 C   sn   d| _ tj| | ttd}tj| t| || | j	d k	rP| j	
  t rj|   | j  d S )NFzimages/matplotlib.pdf)_shownr   FigureManagerr!   r9   r   r=   Zset_iconr
   Ztoolbarr(   rK   Zis_interactiveshowr@   r-   )r$   r@   numZ	icon_pathr   r   r   r!      s    

zFigureManagerMac.__init__c                 C   s   t |  | j  d S r   )r   destroyr@   Zflush_eventsr)   r   r   r   _close_button_pressed   s    
z&FigureManagerMac._close_button_pressedrR   c                 C   s   |   S r   )r^   r)   r   r   r   close   s    zFigureManagerMac.closec                 C   s   t   d S r   )r   r[   r   r   r   r   start_main_loop   s    z FigureManagerMac.start_main_loopc                 C   s*   | j s|   d| _ tjd r&|   d S )NTzfigure.raise_window)rY   Z_showrK   rL   _raiser)   r   r   r   r[      s
    
zFigureManagerMac.showN)r   r   r   r8   Z_toolbar2_classr!   r^   r   rX   r_   classmethodr`   r[   r   r   r   r   r      s   

r   c                   @   s   e Zd ZeZeZejZdS )_BackendMacN)	r   r   r   r   FigureCanvasr   rZ   r`   Zmainloopr   r   r   r   rc      s   rc   )rH   Z
matplotlibrK   r   r   Zmatplotlib._pylab_helpersr    r   Zbackend_aggr   Zmatplotlib.backend_basesr   r	   r
   r   r   r   Zmatplotlib.figurer   Zmatplotlib.widgetsr   Timerr   rd   r   r8   rZ   r   exportrc   r   r   r   r   <module>   s    U(#