
    rbi%                     N   d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Zd dlZ
d dlZ
d dlZ
d dlmZ d dlZd dlmZmZ d dlZd dl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* d dl+m,Z, 	 dd	l-m.Z. dd
l.m/Z/m0Z0 n# e1$ rZ2 e3e2dd          Z4 e3e4dd          Z5 e6e4e1          rT e6e5e7          rHd e8e5          v r;dej9        :                    e	j;                  v Z<e<r e1d          e2 e1d          e2 dZ2[2ww xY w ej=        e>          Z?e#j@        de#jA        de#jB        de#jC        de#jD        de#jE        de#jF        diZGed             ZHi ZId e jJ                    jK        z   ZLd ZMd0dZN G d de!          ZO G d de          ZP G d d e          ZQ G d! d"e ejR                  ZSd# ZT ejU        eP           G d$ d%ejV                              ZW G d& d'e"ejR                  ZX ejU        eP           G d( d)ejY                              ZZ ejU        eP           G d* d+ej[                              Z\ ejU        eP           G d, d-ej]                              Z^eXZ_eSeQ_`        eXeQ_a        ejb         G d. d/e                      ZcdS )1    N)contextmanager)SimpleDialog)ImageImageTk)_apibackend_toolscbook_c_internal_utils)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2	TimerBaseToolContainerBasecursors_ModeMouseButton
CloseEventKeyEventLocationEvent
MouseEventResizeEvent)Gcf   )_tkagg)TK_PHOTO_COMPOSITE_OVERLAYTK_PHOTO_COMPOSITE_SET	__cause__z&'_tkinter' has no attribute '__file__'z
/uv/pythonzFailed to import tkagg backend. You appear to be using an outdated version of uv's managed Python distribution which is not compatible with Tk. Please upgrade to the latest uv version, then update Python with: `uv python upgrade --reinstall`a  Failed to import tkagg backend. This is likely caused by using a Python executable based on python-build-standalone, which is not compatible with Tk. Recent versions of python-build-standalone should be compatible with Tk. Please update your python version or select another backend.fleurhand2arrow	crosshairwatchsb_h_double_arrowsb_v_double_arrowc               #      K   t          j                    } 	 d V  | r(t          j        d         rt          j        |            d S d S d S # | r't          j        d         rt          j        |            w w w xY w)Nztk.window_focus)r
   Win32_GetForegroundWindowmplrcParamsWin32_SetForegroundWindow)
foregrounds    o/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/matplotlib/backends/_backend_tk.py!_restore_foreground_window_at_endr-   E   s      "<>>JD 	D#,'89 	D7
CCCCC	D 	D 	D 	D: 	D#,'89 	D7
CCCC	D 	Ds   A	 	,A5	mpl_blit_c                     t                               |           \  }}}}}|j                            dd|          sdS t	          j        |j                                        t          |          ||||           dS )z
    Thin wrapper to blit called via tkapp.call.

    *argsid* is a unique string identifier to fetch the correct arguments from
    the ``_blit_args`` dict, since arguments cannot be passed directly.
    infocommandsN)
_blit_argspoptkcallr   blit
interpaddrstr)argsid
photoimagedataoffsetsbbox	comp_rules         r,   _blitr?   T   s     2<1G1G.JgtY=fj*== 
K
((**C
OOT9g        c                 v   t          j        |          }|j        dd         \  }}||                                \  \  }}\  }	}
t	          t          j        |          d          }t          t          j        |	          |          }	t	          t          j        |          d          }t          t          j        |
          |          }
||	k    s||
k    rdS ||	||
f}t          }nd|d|f}t          }| ||||f}t          t          |                    }|t          |<   	 | j                            t           |           dS # t          j        $ rb}dt          |          vr | j                            t           t&                     | j                            t           |           Y d}~dS d}~ww xY w)a  
    Blit *aggimage* to *photoimage*.

    *offsets* is a tuple describing how to fill the ``offset`` field of the
    ``Tk_PhotoImageBlock`` struct: it should be (0, 1, 2, 3) for RGBA8888 data,
    (2, 1, 0, 3) for little-endian ARBG32 (i.e. GBRA8888) data and (1, 2, 3, 0)
    for big-endian ARGB32 (i.e. ARGB8888) data.

    If *bbox* is passed, it defines the region that gets blitted. That region
    will be composed with the previous data according to the alpha channel.
    Blitting will be clipped to pixels inside the canvas, including silently
    doing nothing if the *bbox* region is entirely outside the canvas.

    Tcl events must be dispatched to trigger a blit from a non-Tcl thread.
    N   r   zinvalid command name)npasarrayshape	__array__maxmathfloorminceilr   r   r8   idr2   r4   r5   _blit_tcl_nameTclErrorcreatecommandr?   )r:   aggimager<   r=   r;   heightwidthx1y1x2y2bboxptrr>   argsr9   es                   r,   r6   r6   b   s     :hDJrrNMFE!^^--R(2rB##2&&B##2''GGbFr2r".		eQ'*	 tWgy8D D]]FJv3>622222; 3 3 3!Q//##NE:::>6222222222	3s   % E F8AF33F8c                   8     e Zd ZdZ fdZd Zd Z fdZ xZS )TimerTkz<Subclass of `backend_bases.TimerBase` using Tk timer events.c                 V    d | _          t                      j        |i | || _        d S N)_timersuper__init__parent)selfra   rX   kwargs	__class__s       r,   r`   zTimerTk.__init__   s1    $)&)))r@   c                     |                                   | j                            | j        | j                  | _        d S r]   )_timer_stopra   after	_interval	_on_timerr^   rb   s    r,   _timer_startzTimerTk._timer_start   s5    k''GGr@   c                 `    | j         | j                            | j                    d | _         d S r]   )r^   ra   after_cancelrj   s    r,   rf   zTimerTk._timer_stop   s-    ;"K$$T[111r@   c                 *    t                                                        j        sb j        r[ j        dk    r, j                             j         j                   _        d S  j                             fd           _        d S d  _        d S )Nr   c                  N     j                              j         j                  S r]   )ra   rg   rh   ri   rj   s   r,   <lambda>z#TimerTk._on_timer.<locals>.<lambda>   s    DK--dndnMM r@   )r_   ri   _singler^   rh   ra   rg   
after_idle)rb   rd   s   `r,   ri   zTimerTk._on_timer   s    
 | 	 	~!!"k//OO #k44MMMM  DKKKr@   )	__name__
__module____qualname____doc__r`   rk   rf   ri   __classcell__rd   s   @r,   r[   r[      sx        FF    
H H H  
        r@   r[   c                        e Zd ZdZ ej        d           Zd fd	Zd dZd Z	d Z
d Zd	 Zd
 Zd Zd Zd!dZd Zd Zd Zd Zed             Zeddd            Zd Zd Zd Zd Zd Zd"dZd Zd Z xZ S )#FigureCanvasTkr4   c                     t           S r]   )FigureManagerTk)clss    r,   rp   zFigureCanvasTk.<lambda>   s    ? r@   Nc                   	
 t                                          |           d | _        d | _        |                     d          \  }}t          j        |d||dd          | _        t          j        | j        ||          | _	        | j        
                    |dz  |dz  | j	                  | _        | j                            d	| j                   | j                            d
| j                   | j                            d| j                   | j                            d| j                   | j                            d| j                   | j                            d| j                   | j                            d| j                   dD ]"}| j                            || j                   #dD ]"}| j                            || j                   #dD ]"}| j                            || j                   #dD ]"}| j                            || j                   #| j                                        }t3          j        |           t3          j        |          
fd}|                    d|d          
	fd}|                    d|d          	| j                                         d | _        d | _        d S )NTphysicalwhiter   )master
backgroundrR   rQ   borderwidthhighlightthickness)r   rR   rQ   rB   imagez<Configure>z<Map>z<Key>z<Motion><Enter><Leave>z<KeyRelease>)z
<Button-1>z
<Button-2>z
<Button-3>)z<Double-Button-1>z<Double-Button-2>z<Double-Button-3>)z<ButtonRelease-1>z<ButtonRelease-2>z<ButtonRelease-3>)z
<Button-4>z
<Button-5>c                                  }|$             }||                     d           d S |                    |           S )N<MouseWheel>)unbindscroll_event_windows)eventrb   rootscroll_event_windows_idweakrootweakselfs      r,   r   z5FigureCanvasTk.__init__.<locals>.scroll_event_windows   sR    8::D|xzz#KK0GHHH,,U333r@   r   +c                                  }|$             }||                     d           d S | j        |j        u r$t          d|                                           d S d S )N	<Destroy>close_event)r   widget	_tkcanvasr   _process)r   rb   r   filter_destroy_idr   r   s      r,   filter_destroyz/FigureCanvasTk.__init__.<locals>.filter_destroy   sw    8::D|xzz#KK->???|t~--=$//88::::: .-r@   r   )r_   r`   _idle_draw_id_event_loop_idget_width_heightr4   Canvasr   
PhotoImage_tkphotocreate_image_tkcanvas_image_regionbindresize_update_device_pixel_ratio	key_pressmotion_notify_evententer_notify_eventleave_notify_eventkey_releasebutton_press_eventbutton_dblclick_eventbutton_release_eventscroll_eventwinfo_toplevelweakrefref	focus_set_rubberband_rect_black_rubberband_rect_white)rb   figurer   whnamer   r   r   r   r   r   r   rd   s            @@@@r,   r`   zFigureCanvasTk.__init__   s      !"$$d$331gA1D D D >16 6 6&*n&A&AqD!Q$dm 'B '- '-#M4;777GT%DEEEGT^444J(@AAAIt'>???It'>???ND,<===> 	? 	?DNd&=>>>>O 	B 	BDNd&@AAAAO 	A 	ADNd&?@@@@ / 	9 	9DNd&78888
 ~,,.. ;t$$;t$$	4 	4 	4 	4 	4 	4 	4 #'))N<PRU"V"V	; 	; 	; 	; 	; 	; 	; !IIk>3GG  """&*#&*###r@   c                    d }t           j        dk    r2t          | j        j                            dd          dz  d          }n-t           j        dk    r| j                            d          dz  }|L|                     |          r9|                     d	
          \  }}| j        	                    ||           d S d S d S )Nwin32r4   scalinggUUUUUU?rB   linux1i`   Tr   rR   rQ   )
sysplatformroundr   r4   r5   winfo_fpixels_set_device_pixel_ratior   	configure)rb   r   ratior   r   s        r,   r   z)FigureCanvasTk._update_device_pixel_ratio  s    <7"" $.+00yAAWMqQQEE\W$$N0066;E!=!=e!D!D (($(77DAqN$$1Q$77777 r@   c                 ,   |j         |j        }}| j        j        }||z  }||z  }| j                            ||d           | j                            | j                   | j        	                    t          |          t          |                     | j                            t          |dz            t          |dz            | j                  | _        t          d|                                            |                                  d S )NF)forwardr   rB   r   resize_event)rR   rQ   r   dpiset_size_inchesr   deleter   r   r   intr   r   r   	draw_idle)rb   r   rR   rQ   dpivalwinchhinchs          r,   r   zFigureCanvasTk.resize  s    U\v ##E5%#@@@d9:::c%jjVEEE&*n&A&A	NNC
OO4= 'B 'B 'B#ND))22444r@   c                 b      j         rd S  fd} j                            |           _         d S )Nc                  X    	                                   d _        d S # d _        w xY wr]   )drawr   rX   rb   s    r,   	idle_drawz+FigureCanvasTk.draw_idle.<locals>.idle_draw,  s7    *		%)"""T"))))s     	))r   r   rr   )rb   r   s   ` r,   r   zFigureCanvasTk.draw_idle'  sL     	F	* 	* 	* 	* 	* "^66yAAr@   c                     | j         S )z
        Return the Tk widget used to implement FigureCanvasTkAgg.

        Although the initial implementation uses a Tk canvas,  this routine
        is intended to hide that fact.
        )r   rj   s    r,   get_tk_widgetzFigureCanvasTk.get_tk_widget4  s     ~r@   c                     | j                             |j                  | j        j        j        | j                             |j                  z
  fS r]   )r   canvasxxr   r=   rQ   canvasyyrb   r   s     r,   _event_mpl_coordsz FigureCanvasTk._event_mpl_coords=  sG     &&uw// '$.*@*@*I*IIK 	Kr@   c                     t          d| g|                     |          R |                     |          |                     |          |d                                 d S )Nr   )buttons	modifiersguiEvent)r   r   _mpl_buttons_mpl_modifiersr   r   s     r,   r   z"FigureCanvasTk.motion_notify_eventD  so    ($ 	#**511	# 	#,,U33!0077!		# 	# 	# $,8:::::r@   c                     t          d| g|                     |          R |                     |          |d                                 d S )Nfigure_enter_eventr   r   r   r   r   r   r   s     r,   r   z!FigureCanvasTk.enter_notify_eventK  ^    *D 	&--e44	& 	& $ 3 3E : :$	& 	& 	& '/hjjjjjr@   c                     t          d| g|                     |          R |                     |          |d                                 d S )Nfigure_leave_eventr   r   r   s     r,   r   z!FigureCanvasTk.leave_notify_eventQ  r   r@   Fc                 F   | j                                          t          |dd           }t          j        dk    rddd                    ||          }t          d| g|                     |          |R ||                     |          |d	                                 d S )Nnumdarwin   rB   rB   r   r   )dblclickr   r   )
r   r   getattrr   r   getr   r   r   r   )rb   r   r   r   s       r,   r   z!FigureCanvasTk.button_press_eventW  s      """eUD))<8##A,,""3,,C' 	#**511	#36	# 	#AI!0077!	# 	# 	# $,8:::::r@   c                 4    |                      |d           d S )NT)r   )r   r   s     r,   r   z$FigureCanvasTk.button_dblclick_eventc  s!    55555r@   c                    t          |dd           }t          j        dk    rddd                    ||          }t	          d| g|                     |          |R |                     |          |d                                 d S )Nr   r   r   rB   r   r   r   )r   r   r   r   r   r   r   r   )rb   r   r   s      r,   r   z#FigureCanvasTk.button_release_eventf  s    eUD))<8##A,,""3,,C)4 	#**511	#36	# 	#!0077!	# 	# 	# $,8:::::r@   c                     t          |dd           }|dk    rdn	|dk    rdnd}t          d| g|                     |          R ||                     |          |d                                 d S )	Nr      r      r   r   stepr   r   )r   r   r   r   r   )rb   r   r   r   s       r,   r   zFigureCanvasTk.scroll_evento  s    eUD))1HHqqq""a>4 	#**511	# 	#8<!0077!	# 	# 	# $,8:::::r@   c           
         |j                             |j        |j                  }|| j        k    rdS | j                            |j        |                                z
            }| j        j        j	        | j        
                    |j        |                                z
            z
  }|j        dz  }t          d| ||||                     |          |                                           dS )zMouseWheel event processorNx   r   r   )r   winfo_containingx_rooty_rootr   r   winfo_rootxr   r=   rQ   r   winfo_rootydeltar   r   r   )rb   r   r   r   r   r   s         r,   r   z#FigureCanvasTk.scroll_event_windowsw  s     L))%,EEFN""5<!--//#ABB[$~%%elQ]]__&DEEF{S >4add.A.A%.H.H!	# 	# 	##+8:::::r@   c                 L    t           j        dk    rCt          j        dft          j        dft          j        dft          j        dft          j        dfgnBt          j        dft          j        dft          j        dft          j        dft          j        dfg} fd|D             S )Nr      i   i   i   i   c                 .    g | ]\  }}j         |z  |S  state).0r   maskr   s      r,   
<listcomp>z/FigureCanvasTk._mpl_buttons.<locals>.<listcomp>  s)    GGGtEK$4FGGGGr@   )r   r   r   LEFTRIGHTMIDDLEBACKFORWARD)r   r   s   ` r,   r   zFigureCanvasTk._mpl_buttons  s     \X%% v&')w' '*
 
 v&((w' '*,
 	  HGGGyGGGGr@   excludec                |     t           j        dk    rg dnt           j        dk    rg dng d} fd|D             S )Nr   )ctrlr   control)alti   r  shiftr   r  r   )r  )r     r  r  )cmd   r  )r  )r  r  r  r  )r_   @   r_   c                 <    g | ]\  }}}j         |z  r|k    |S r	  r
  )r  r   r  keyr   r  s       r,   r  z1FigureCanvasTk._mpl_modifiers.<locals>.<listcomp>  s>     : : :tS;%:*1S.. *8..r@   )r   r   )r   r  r   s   `` r,   r   zFigureCanvasTk._mpl_modifiers  s     \W$$	
 
 
 
 \X%%+
 +
 +
 +

,
 ,
 ,
 	: : : : :I : : : 	:r@   c                     |j         }t          j        ||j                  }|K|                     ||          }d|v r|r|                    d           d                    g ||          S d S )Nr  r  r   )charr	   _unikey_or_keysym_to_mplkeykeysymr   removejoin)rb   r   unikeyr"  modss        r,   _get_keyzFigureCanvasTk._get_key  sz    /EE?&&uc&::D$6G$$$88LdLCL))) ?r@   c                     t          d| |                     |          g|                     |          R d|i                                 d S )Nkey_press_eventr   r   r+  r   r   r   s     r,   r   zFigureCanvasTk.key_press  sZ    "Du%%	!(,(>(>u(E(E	! 	! 	!	! 	!!)r@   c                     t          d| |                     |          g|                     |          R d|i                                 d S )Nkey_release_eventr   r.  r   s     r,   r   zFigureCanvasTk.key_release  sZ    $du%%	!(,(>(>u(E(E	! 	! 	!	! 	!!)r@   c                 ,    t          | j        g|R i |S r]   )r[   r   )rb   rX   rc   s      r,   	new_timerzFigureCanvasTk.new_timer  s"    t~7777777r@   c                 8    | j                                          d S r]   )r   updaterj   s    r,   flush_eventszFigureCanvasTk.flush_events  s    r@   r   c                    |dk    rbt          d|z            }|dk    r&| j                            || j                  | _        n$| j                            | j                  | _        | j                                         d S )Nr   i  )r   r   rg   stop_event_loopr   rr   mainloop)rb   timeoutmillisecondss      r,   start_event_loopzFigureCanvasTk.start_event_loop  s    Q;;tg~..La&*n&:&: $"6'8 '8## '+n&?&?('* '*#!!!!!r@   c                     | j         r&| j                            | j                    d | _         | j                                         d S r]   )r   r   rm   quitrj   s    r,   r7  zFigureCanvasTk.stop_event_loop  sH     	'N''(;<<<"&Dr@   c                     	 | j                             t          |                    d S # t          j        $ r Y d S w xY w)N)cursor)r   r   cursordtkinterrN   )rb   r?  s     r,   
set_cursorzFigureCanvasTk.set_cursor  sO    	N$$GFO$<<<<< 	 	 	DD	s   &* ==)NNr]   )F)r   )!rs   rt   ru   required_interactive_frameworkr   classpropertymanager_classr`   r   r   r   r   r   r   r   r   r   r   r   r   r   staticmethodr   r   r+  r   r   r2  r5  r;  r7  rB  rw   rx   s   @r,   rz   rz      s       %)"&D&'B'BCCMC+ C+ C+ C+ C+ C+J8 8 8 8    B B B  K K K. . .1 1 11 1 1
. 
. 
. 
.6 6 6. . .. . .. . . H H \H* )- : : : : \:2* * *, , ,
, , ,
8 8 8     
" 
" 
" 
"        r@   rz   c                   |     e Zd ZdZdZ fdZed             Zed             Zd Z	d Z
d Zd	 Zd
 Zd Zd Z xZS )r|   z
    Attributes
    ----------
    canvas : `FigureCanvas`
        The FigureCanvas instance
    num : int or str
        The Figure number
    toolbar : tk.Toolbar
        The tk.Toolbar
    window : tk.Window
        The tk.Window
    Fc                 8   || _         t                                          ||           | j                                          | j        j                            t          j        t          j	        d           t          |                                d          }t          j        |dd|           | _        d| _        t          j        ||j                                                  r%| j                            d| j                  | _        d	| _        d S )
Nr   )sidefillexpandr  r   
window_dpi)r   valuer    writeF)windowr_   r`   withdrawcanvasr   packr4   TOPBOTHr   wm_frameIntVar_window_dpi_window_dpi_cbnamer   enable_dpi_awarenessr7   	trace_add_update_window_dpi_shown)rb   rR  r   rP  window_framerd   s        r,   r`   zFigureManagerTk.__init__  s    %%% 	""RWQ"GGG
 6??,,b119F"*E|*E*EG G G"$&|VY5I5I5K5KLL 	2&*&6&@&@0'2 '2D# r@   c                    t                      5  t          j                    &t          j                     t	          j                     t          j        d          }|                                 t          t          j
        d                    }t          j        ||          }t          t          j
        d                    }t          j        ||          }|                    d||            |||          }	 | |	||          }
t          j                    r(|
                                 |	                                 |
cd d d            S # 1 swxY w Y   d S )N
matplotlib)	classNamezimages/matplotlib.png)filer   zimages/matplotlib_large.pngFr   )r-   r	   "_get_running_interactive_framework_setup_new_guiappr
    Win32_SetProcessDpiAwareness_maxr4   TkrQ  r8   _get_data_pathr   r   	iconphotor(   is_interactiveshowr   )r}   canvas_classr   r   rP  
icon_fnameicon_imgicon_fname_largeicon_img_largerR  managers              r,   create_with_canvasz"FigureManagerTk.create_with_canvas  s    /00 	 	799A')))!BDDDU\222FOO U1') ) * *J)z&IIIH"5#7-$/ $/  0  0$/%f6 6 6N UNH===!\&888Fc&#v..G!## #  """;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   D>EE!Ec                     t          j                    }|rV|d         }t          |          }|j        rd S d|_        	 |j                                         d|_        d S # d|_        w xY wd S )Nr   TF)r   get_all_fig_managerstype_owns_mainlooprP  r8  )r}   managersfirst_managerrE  s       r,   start_main_loopzFigureManagerTk.start_main_loop2  s    +-- 		5$QKM //M+ +/M(5$--////4,,,u,4444		5 		5s   A   	A)c                    | j                                         }| j                            dd|dz             | j        r.t          | j        d          r| j                                         | j                                         d S )Nr4   r   H   _rescale)	rX  r   rP  r5   toolbarhasattrr|  rR  r   )rb   rX   newdpis      r,   r\  z"FigureManagerTk._update_window_dpi@  s    !%%''y&2+666< 	$GDL*== 	$L!!###..00000r@   c           	          d}||k    s||k    r)t           j        dk    rt          d| d| d| d          | j        j                            ||           d S )Ni\ r   z/You have requested to resize the Tk window to (z, z), one of which is bigger than z.  At larger sizes xorg will either exit with an error on newer versions (~1.20) or cause corruption on older version (~1.19).  We do not expect a window over a million pixel wide or tall to be intended behavior.r   )r   r   
ValueErrorrR  r   r   )rb   rR   rQ   max_sizes       r,   r   zFigureManagerTk.resizeG  s    H 1 1s|w7N7N+!&+ +*0+ +"*+ + +, , , 	''eF'CCCCCr@   c                     t                      5   j        sX fd} j                            d|            j                                          j        j                                         n j                                         t          j
        d         rJ j        j        j                            dd            j        j        j                            dd           d _        d d d            d S # 1 swxY w Y   d S )Nc                  0    t          j                   d S r]   )r   destroyr   s    r,   r  z%FigureManagerTk.show.<locals>.destroyX  s    K%%%%%r@   WM_DELETE_WINDOWzfigure.raise_windowz-topmostr   r   T)r-   r]  rP  protocol	deiconifyrR  r   r   r   r(   r)   rq  
attributes)rb   r  s   ` r,   rk  zFigureManagerTk.showU  sE   .00 	 	; (& & & & &$$%7AAA%%'''%//1111%%'''|12 E#*55j!DDD#*55j!DDDDK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   CC99C= C=c                      j         j        r) j         j                             j         j                    j         j        r) j         j                             j         j                    j        r  j                            d j                    fd}t          j	                    dk    r( j
                             j
        j        d|           d S  j
                                          |             d S )NrO  c                       j                                           j        r.t          j                    s j                                          d S d S d S r]   )rP  r  rv  r   get_num_fig_managersr=  rj   s   r,   delayed_destroyz0FigureManagerTk.destroy.<locals>.delayed_destroyq  s`    K!!!" #3+C+E+E #  """""# # # #r@   r4   r   )rR  r   r   rm   r   rY  rX  trace_remover	   rd  rP  rr   rg   r4  )rb   rX   r  s   `  r,   r  zFigureManagerTk.destroyd  s    ;$ 	JK!..t{/HIII;% 	KK!..t{/IJJJ" 	L))'43JKKK	# 	# 	# 	# 	# 355==K""4;#4aIIIIIK   Or@   c                 4    | j                                         S r]   rP  wm_titlerj   s    r,   get_window_titlez FigureManagerTk.get_window_title~  s    {##%%%r@   c                 :    | j                             |           d S r]   r  )rb   titles     r,   set_window_titlez FigureManagerTk.set_window_title  s    U#####r@   c                     t          | j                            d                    }| j                            d|            d S )Nz-fullscreen)boolrP  r  )rb   is_fullscreens     r,   full_screen_togglez"FigureManagerTk.full_screen_toggle  s@    T[33MBBCC}-.?@@@@@r@   )rs   rt   ru   rv   rv  r`   classmethodrr  ry  r\  r   rk  r  r  r  r  rw   rx   s   @r,   r|   r|     s          N    *   [B 5 5 [51 1 1D D D    4& & &$ $ $A A A A A A Ar@   r|   c                   r     e Zd ZddddZd Zd Z fdZ fdZd	 Zd
 Z	d Z
d Zd Zd Zd Zd Z xZS )NavigationToolbar2TkNT)pack_toolbarc                   ||                                 j        }t          j                            | |dt          |j        j        j                  d           i | _	        | j
        D ]\  }}}}||                                  |                     |t          t          j        d| d                    |dv t!          | |                    x| j	        |<   }|t#          ||           t$          j                            |d	
          | _        t          j        | | j        d          }	|	                    t          j                   t          j        |           | _        t          j        | | j        | j        t          j                  | _        | j                            t          j                   t9          j        | |           |r-|                     t          j        t          j                   dS dS )a  
        Parameters
        ----------
        canvas : `FigureCanvas`
            The figure canvas on which to operate.
        window : tk.Window
            The tk.Window which owns this toolbar.
        pack_toolbar : bool, default: True
            If True, add the toolbar to the parent's pack manager's packing
            list during initialization with ``side="bottom"`` and ``fill="x"``.
            If you want to use the toolbar with a different layout manager, use
            ``pack_toolbar=False``.
        NrB   2   )r   r   rR   rQ   zimages/.png)zoompan)togglecommand
   )r   size    
 r   fonttextrI  rc  )r   r  textvariablejustifyrI  rJ  )r   r   r4   Framer`   r   r   r=   rR   _buttons	toolitems_Spacer_Buttonr8   r	   rh  r   add_tooltiprA  r  Font_label_fontLabelrS  r  	StringVarmessage_message_labelr   BOTTOMX)
rb   rR  rP  r  r  tooltip_text
image_filecallbackbuttonlabels
             r,   r`   zNavigationToolbar2Tk.__init__  s    >))++2F
$v1 #FM$6$< = =b 	 	J 	J 	J 8< 	6 	64D,
H|/3||,-Gz-G-G-GHHII#6#D(33	 0< 0 0 d#f  +555"<,,&r,BB 4+;FH H H


!!!|4000 hd9I48L/1x9 9 9 	  bh ///#D&111 	1II2924I00000	1 	1r@   c                    |                                  D ]}t          |t          j        t          j        f          r-t          |d          rt                              | |           TUt          |t          j                  r-|	                    d           |
                    d           t          |t          j                  rt                              d|j                   | j        	                    d           d	S )
a  
        Scale all children of the toolbar to current DPI setting.

        Before this is called, the Tk scaling setting will have been updated to
        match the new DPI. Tk widgets do not update for changes to scaling, but
        all measurements made after the change will match the new scaling. Thus
        this function re-applies all the same sizes in points, which Tk will
        scale correctly to pixels.
        _image_file18p)rQ   3p)padxzUnknown child class %sr  r  N)winfo_children
isinstancer4   ButtonCheckbuttonr~  r  _set_image_for_buttonr  r   pack_configurer  _logwarningwinfo_classr  )rb   r   s     r,   r|  zNavigationToolbar2Tk._rescale  s    ))++ 	K 	KF&29bn"=>> K6=11 (>>tVLLLL FBH-- K   ...%%4%0000FBH-- K5v7IJJJJ"""+++++r@   c                     dt           j        fdt           j        ffD ]X\  }}|| j        v rJ| j        |k    r | j        |                                          9| j        |                                          Yd S )NZoomPan)r   ZOOMPANr  modeselectdeselect)rb   r  r  s      r,   _update_buttons_checkedz,NavigationToolbar2Tk._update_buttons_checked  s    "EJ/%1CD 	3 	3JD$t}$$9$$M$'..0000M$'00222	3 	3r@   c                 \     t                      j        |  |                                  d S r]   )r_   r  r  rb   rX   rd   s     r,   r  zNavigationToolbar2Tk.pan  s.    T$$&&&&&r@   c                 \     t                      j        |  |                                  d S r]   )r_   r  r  r  s     r,   r  zNavigationToolbar2Tk.zoom  s.    d$$&&&&&r@   c                 :    | j                             |           d S r]   )r  setrb   ss     r,   set_messagez NavigationToolbar2Tk.set_message  s    r@   c                    | j         j        r)| j         j                            | j         j                   | j         j        r)| j         j                            | j         j                   | j         j        j        j        }||z
  }||z
  }| j         j                            ||||          | j         _        | j         j                            ||||dd          | j         _        d S )Nr   )r   r   )outlinedash)	rR  r   r   r   r   r   r=   rQ   create_rectangle)rb   r   x0y0rS   rT   rQ   s          r,   draw_rubberbandz$NavigationToolbar2Tk.draw_rubberband  s    ;- 	MK!(()KLLL;- 	MK!(()KLLL#(/b[b[K!22BB    	* K!22BBf 3 > > 	***r@   c                    | j         j        r5| j         j                            | j         j                   d | j         _        | j         j        r7| j         j                            | j         j                   d | j         _        d S d S r]   )rR  r   r   r   r   rj   s    r,   remove_rubberbandz&NavigationToolbar2Tk.remove_rubberband   s|    ;- 	6K!(()KLLL15DK.;- 	6K!(()KLLL15DK...	6 	6r@   c           	      h   j         dS t          j        dj                   }|                    |j                            dd                    }                    d          }fdfd}d }t          j        |d	k    r|	                                r|n|          5 }|
                    d
          }t          j        |                    ||f          |           }|_        dt          j                                                d                              z  }	 |||	          }
t          j        |
                    ||f          |           }|_        ddd           n# 1 swxY w Y    |d          rd|i}nd|i}t)          t*          j                  rr                    d          dk    rY| j        dk    rd}n5 d          \  }}} d          \  }}}||z   dz  ||z   dz  ||z   dz  f} ||          r||d<   n||d<    j        di |ddd dS )z
        Set the image for a button based on its pixel size.

        The pixel size is determined by the DPI scaling of the window.
        Nimagesr  z
_large.pngr  c                 T                                             |                     S r]   )	winfo_rgbcget)
color_namer  s    r,   
_get_colorz>NavigationToolbar2Tk._set_image_for_button.<locals>._get_color  s#    ##FKK
$;$;<<<r@   c                 j    t          | t                    r |           } t          |           dk     S )Ng    @)r  r8   rG   )colorr  s    r,   _is_darkz<NavigationToolbar2Tk._set_image_for_button.<locals>._is_dark  s5    %%% *"
5))u::	))r@   c                     t          j        |                                           }|dd df         dk                        d          }|||d df<   t	          j        |          S )N.r   r   r   )axis)rC   rD   copyallr   	fromarray)r   r  
image_data
black_masks       r,   _recolor_iconzANavigationToolbar2Tk._set_image_for_button.<locals>._recolor_icon"  sg    E**//11J$S"1"W-277R7@@J).Jz2A2~&?:...r@      RGBArc  g o?r+   r   r   selectcolorrN  x11activebackgroundrB   selectimage)rQ   rR   r	  )r  r	   rh  	with_namer   replacewinfo_pixelsr   openexistsconvertr   r   r   _ntimagerC   arrayr  r  _ntimage_altr  r4   r  _windowingsystemr   )rb   r  path_regular
path_larger  r  r  imr   r+   im_alt	image_altimage_kwargsr  r1g1b1r2g2b2r  s    `                  @r,   r  z*NavigationToolbar2Tk._set_image_for_button  s    %F +Hf6HII!++%%fl;;= =
""5))	= 	= 	= 	= 	=	* 	* 	* 	* 	*
	/ 	/ 	/ ZtbyyZ5F5F5H5Hy

)+ + 	,.0F##B&ryy$'>'>tLLLE#FO &  \!:!:;;*= *= =J"]2z22F*tTl++D: : :I"+F	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 8L!! 	,
 $Y/LL#U+L
 vr~..	4M**b00$--+
 (Z66
B'Z(:;;
B "2qy2b5!)beQY?x$$ 4.7]++.3]+CC<CUCCCCCCCs   &CE55E9<E9c           
      p   |st          j        | ||ddd          }n8t          j        |           }t          j        | ||d|ddd          }||_        ||_        |t                              | |           n|                    | j	                   |
                    t           j        	           |S )
Nflatgroover   )r   r  r  relief
overreliefr   rc  F)r   r  r  indicatoronvariable	offreliefr  r   )r  r  )r4   r  rW  r  varr  r  r  r   r  rS  r  )rb   r  r  r  r  br!  s          r,   r  zNavigationToolbar2Tk._ButtonW  s     		$(  AA )4(((C$U8  A
 AE"! 66tQ????KKT-K...	BGr@   c                     t          j        | dt           j        d          }|                    t           j        d           |S )Nr  DarkGray)r   rQ   r  bgr  )rI  r  )r4   r  RIDGErS  r  r  s     r,   r  zNavigationToolbar2Tk._Spacers  s9    HDrxJOOO	BG$'''r@   c           	         | j                                         }d t          |                                          D             }| j                                         }| j                                         |         }t          j        | j                                         |          }d}t          j
                            t          j        d                   }t          j        | j                                                   j        }	t$          j                            | j                                         j        d||||	|          }
|
dv rd S |dk    r9t          j
                            t/          |
                    t          j        d<   t          j        |
          j        dd          dk    rd }n ||                                         d         }	 | j         j                            |
|	           |
S # t8          $ r8}t$          j                            d
t/          |                     Y d }~d S d }~ww xY w)Nc                 V    g | ]&\  }}|d                      d |D                       f'S ) c              3       K   | ]	}d | V  
dS )z*.Nr	  )r  exts     r,   	<genexpr>z>NavigationToolbar2Tk.save_figure.<locals>.<listcomp>.<genexpr>|  s(      773JJJ777777r@   )r(  )r  r   extss      r,   r  z4NavigationToolbar2Tk.save_figure.<locals>.<listcomp>{  sL     
 
 
d 38877$777778
 
 
r@   rN  zsavefig.directoryzSave the figure)r   r  	filetypesdefaultextension
initialdirinitialfiletypevariable)rN  r	  r   r   )formatzError saving file)rR  get_supported_filetypes_groupedsorteditemsget_default_filetypeget_supported_filetypesr4   r  r   ospath
expanduserr(   r)   pathlibPathget_default_filenamestemrA  
filedialogasksaveasfilenamer   dirnamer8   suffixr   r   savefig	Exception
messagebox	showerror)rb   rX   r.  tk_filetypesdefault_extensiondefault_filetypefiletype_variabler/  r0  r1  fname	extensionrY   s                r,   save_figurez NavigationToolbar2Tk.save_figurey  s%   K??AA	
 
$Y__%6%677
 
 

 !K<<>>;>>@@ARSL)B)B)D)DFVWW W''5H(IJJ
 l4;#C#C#E#EFFK"44;,,..5#"-!#* 5   H4E

++ L,-
 <%abb)R//II!"3"7"7"9"9:1=I	FK&&uY&???L 	F 	F 	F(()<c!ffEEEEEEEEE	Fs   "G= =
H?-H::H?c                 "   t           j        t           j        d}| j        j        dk    }| j        j        t          | j                  dz
  k     }d| j        v r||         | j        d         d<   d| j        v r||         | j        d         d<   d S d S )N)TFr   r   Backr  Forward)r4   NORMALDISABLED
_nav_stack_poslenr  )rb   	state_mapcan_backcan_forwards       r,   set_history_buttonsz(NavigationToolbar2Tk.set_history_buttons  s    9R[99	?'!+o*S-A-AA-EET]""-6x-@DM&!'*%%09+0FDM)$W--- &%r@   r]   )rs   rt   ru   r`   r|  r  r  r  r  r  r  r  r  r  rN  rZ  rw   rx   s   @r,   r  r    s       51D 51 51 51 51 51n, , ,63 3 3' ' ' ' '' ' ' ' '  ? ? ? 6 6 6MD MD MD^  8  2F 2F 2FhG G G G G G Gr@   r  c                      d  fd}fd}                      d|                                 d|           d S )Nc                 P   ssdS                      d          \  }}}}|                                z                                   z   }|                                z   }t	          j                                      d                               d| d|            	 j                            ddj	        dd           n# t          j
        $ r Y nw xY wt	          j        t          j        t          j        d	          }|                    d
           dS )zDisplay text in tooltip window.Ninsertr   r   z!::tk::unsupported::MacWindowStylestylehelpnoActivates)r  r  r  r   )ipadx)r=   r  winfo_widthr  r4   Topleveloverrideredirectgeometryr5   _wrN   r  r  SOLIDrS  )r   r   r   _r  r  	tipwindowr   s        r,   showtipzadd_tooltip.<locals>.showtip  sH     	D 	F[[**
1a""$$$v'9'9';';;""$$$K''	""1%%%;q;;1;;'''	LA%y|$m5 5 5 5 { 	 	 	D	rw "a9 9 9


s   *#C C C c                 8    r                                  d d S r]   )r  )r   ri  s    r,   hidetipzadd_tooltip.<locals>.hidetip  s&     	 			r@   r   r   )r   )r   r  rj  rl  ri  s   ``  @r,   r  r    sv    I      *     KK	7###
KK	7#####r@   c                       e Zd Zd Zd ZdS )RubberbandTkc                 h    t                               |                                 d ||||           d S r]   )r  r  "_make_classic_style_pseudo_toolbar)rb   r  r  rS   rT   s        r,   r  zRubberbandTk.draw_rubberband  sB    ,,3355tRR	M 	M 	M 	M 	Mr@   c                 ^    t                               |                                            d S r]   )r  r  rp  rj   s    r,   r  zRubberbandTk.remove_rubberband  s3    ..3355	7 	7 	7 	7 	7r@   N)rs   rt   ru   r  r  r	  r@   r,   rn  rn    s5        M M M7 7 7 7 7r@   rn  c                   F    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 ZdS )	ToolbarTkNc                 >   t          j        | |           |#| j        j                                        j        }| j        j        j        j        j        \  }}d||z
  }}t          j
                            | |t          |          t          |          d           t          j                            d          | _        t          j        | | j        d          }|                    t          j                   t          j        | 	          | _        t          j        | | j        | j        
          | _        | j                            t          j                   i | _        |                     t          j        t          j                   i | _        d S )Nr  rB   )r   rR   rQ   r   r  r  r  r  r  rc  )r   r  r  r  )r   r`   toolmanagerrR  r   r   r   r=   	intervalxr4   r  r   rA  r  r  r  r  rS  r  r  _messager  
_toolitemsrT  r  _groups)rb   ru  rP  xminxmaxrQ   rR   r  s           r,   r`   zToolbarTk.__init__  sl   "4555>%,::<<CF%,38B
dD4K
$v #E

3v;;&' 	 	) 	) 	) #<,,",55
 4+;FH H H


!!!D111 hd9I48MC C C  bh ///		rvBD	)))r@   c                 6    t                               |           S r]   )r  r|  rj   s    r,   r|  zToolbarTk._rescale  s    #,,T222r@   c                                           |          }|                                }|t          |          k    s|dk     rd }	n||         }	t                              ||| fd          }
|
                    |	           |t          |
|            j                            g             j                 	                    |
           d S )Nr   c                  .                                    S r]   )_button_click)r   rb   s   r,   rp   z(ToolbarTk.add_toolitem.<locals>.<lambda>
  s    d6H6H6N6N r@   )before)
_get_groupframepack_slavesrV  r  r  r  r  rx  
setdefaultappend)rb   r   grouppositionr  descriptionr  framer   r  r  s   ``         r,   add_toolitemzToolbarTk.add_toolitem  s    $$U++##%%s7||##x!||FFX&F%--eT:v.N.N.N.N.NP PV,,,",,,""4,,,$$V,,,,,r@   c                    || j         vrr| j         r|                                  t          j        | d          }|                    t          j        t          j                   | j        |_        || j         |<   | j         |         S )Nr   )r   r   r  )ry  _add_separatorr4   r  rS  r  Yr  )rb   r  r  s      r,   r  zToolbarTk._get_groupframe  s}    $$| &##%%%HDa888EJJBG"$J/// $ 0E"'DL|E""r@   c                 6    t                               |           S r]   )r  r  rj   s    r,   r  zToolbarTk._add_separator  s    #++D111r@   c                 0    |                      |           d S r]   )trigger_tool)rb   r   s     r,   r  zToolbarTk._button_click  s    $r@   c                     || j         vrd S | j         |         D ]-}|r|                                 |                                 .d S r]   )rx  r  r  )rb   r   toggledtoolitems       r,   toggle_toolitemzToolbarTk.toggle_toolitem!  sd    t&&F- 	$ 	$H $!!!!!!####		$ 	$r@   c                 j    | j                             |g           D ]}|                                 d S r]   )rx  r3   pack_forget)rb   r   r  s      r,   remove_toolitemzToolbarTk.remove_toolitem*  sB    ++D"55 	# 	#H  """"	# 	#r@   c                 :    | j                             |           d S r]   )rw  r  r  s     r,   r  zToolbarTk.set_message.  s    !r@   r]   )rs   rt   ru   r`   r|  r  r  r  r  r  r  r  r	  r@   r,   rs  rs    s           23 3 3- - - # # #2 2 2     $ $ $# # #    r@   rs  c                       e Zd Zd ZdS )SaveFigureTkc                 ^    t                               |                                            d S r]   )r  rN  rp  rb   rX   s     r,   triggerzSaveFigureTk.trigger4  s3    ((3355	7 	7 	7 	7 	7r@   Nrs   rt   ru   r  r	  r@   r,   r  r  2  s#        7 7 7 7 7r@   r  c                       e Zd Zd ZdS )ConfigureSubplotsTkc                 :    t                               |            d S r]   )r  configure_subplotsr  s     r,   r  zConfigureSubplotsTk.trigger;  s    //55555r@   Nr  r	  r@   r,   r  r  9  s#        6 6 6 6 6r@   r  c                       e Zd Zd ZdS )HelpTkc                     t          | j        j        j        |                                 dg          fd_        d S )NOKc                 @    j         j                                        S r]   )r  r   rQ  )r   dialogs    r,   rp   z HelpTk.trigger.<locals>.<lambda>D  s    &,"5">">"@"@ r@   )r   r   rR  r   _get_help_textdone)rb   rX   r  s     @r,   r  zHelpTk.triggerA  sE    K($*=*=*?*?$I I@@@@r@   Nr  r	  r@   r,   r  r  ?  s(        A A A A Ar@   r  c                   2    e Zd Zej        ZeZeZ	ej
        ZdS )
_BackendTkN)rs   rt   ru   r4   	TkVersionbackend_versionrz   FigureCanvasr|   FigureManagerry  r8  r	  r@   r,   r  r  L  s'        lO!L#M.HHHr@   r  r]   )duuidr   
contextlibr   loggingrH   os.pathr9  r<  r   rA  r4   tkinter.filedialogtkinter.fonttkinter.messageboxtkinter.simpledialogr   numpyrC   PILr   r   r`  r(   r   r   r	   r
   matplotlib.backend_basesr   r   r   r   r   r   r   r   r   r   r   r   r   r   matplotlib._pylab_helpersr   rN  r   r   r   ImportErrorrY   r   cause1cause2r  AttributeErrorr8   r:  realpath
executableis_uv_python	getLoggerrs   r  MOVEHANDPOINTERSELECT_REGIONWAITRESIZE_HORIZONTALRESIZE_VERTICALr@  r-   r2   uuid4hexrM   r?   r6   r[   rz   r|   r  r  r  _register_tool_classRubberbandBasern  rs  SaveFigureBaser  ConfigureSubplotsBaser  ToolHelpBaser  Toolbar_toolbar2_class_toolmanager_toolbar_classexportr  r	  r@   r,   <module>r     s(     % % % % % %     



                 - - - - - -                 D D D D D D D D D D D DB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B * ) ) ) ) )JJJJJJJJJ   WQT**FWV[$//F
6;'' Jv~..4FCC#(8(8(H(HI 	+? 
  +-   	38 w""L'L'OW;L'20 D D D 
ztz||//  33 33 33 33l# # # # #i # # #Lj j j j j% j j jZ	[A [A [A [A [A' [A [A [A|kG kG kG kG kG-rx kG kG kG\	$ $ $D $#N337 7 7 7 7=/ 7 7 437K K K K K!28 K K K\ $#N337 7 7 7 7=/ 7 7 437 $#N336 6 6 6 6-= 6 6 436
 $#N33A A A A A]' A A 43A "6 -6 * 
/ / / / / / / / / /s   <B DA;DD