Ë
    ¨eh©  ã                   ó†  — 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  ejb                  e2«      Z3e#jh                  de#jj                  de#jl                  de#jn                  de#jp                  de#jr                  de#jt                  diZ;ed„ «       Z<i Z=d e j|                  «       j~                  z   Z@d„ ZAd+d„ZB G d„ de!«      ZC G d„ de«      ZD G d„ de«      ZE G d„ de ejŒ                  «      ZGd„ ZH ej’                  eD«       G d„ d ej”                  «      «       ZK G d!„ d"e"ejŒ                  «      ZL ej’                  eD«       G d#„ d$ejš                  «      «       ZN ej’                  eD«       G d%„ d&ejž                  «      «       ZP ej’                  eD«       G d'„ d(ej¢                  «      «       ZReLZSeGeE_T        eLeE_U        ej¬                   G d)„ d*e«      «       ZWy),é    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ÚfleurÚhand2ÚarrowÚ	crosshairÚwatchÚsb_h_double_arrowÚsb_v_double_arrowc               #   óø   K  — t        j                  «       } 	 d –— | r*t        j                  d   rt        j                  | «       y y y # | r*t        j                  d   rt        j                  | «       w w w xY w­w)Nztk.window_focus)r
   ÚWin32_GetForegroundWindowÚmplÚrcParamsÚWin32_SetForegroundWindow)Ú
foregrounds    ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/backends/_backend_tk.pyÚ!_restore_foreground_window_at_endr,   )   se   è ø€ ä"×<Ñ<Ó>€JðDÛáœ#Ÿ,™,Ð'8Ò9Ü×7Ñ7¸
ÕCð :ˆ:ø‰:œ#Ÿ,™,Ð'8Ò9Ü×7Ñ7¸
ÕCð :ˆ:üs   ‚A:˜A	 œ-A:Á	.A7Á7A:Ú	mpl_blit_c                 óì   — t         j                  | «      \  }}}}}|j                  j                  dd|«      syt	        j
                  |j                  j                  «       t        |«      ||||«       y)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>   8   s`   € ô 2<·±ÀÓ1GÑ.€J��g˜t YØ�=‰=×Ñ˜f j°*Ô=ØÜ
‡K�K�
—‘×(Ñ(Ó*¬C°
«O¸TÀ9ÈgØõó    c                 ó6  — t        j                  |«      }|j                  dd \  }}|�­|j                  «       \  \  }}\  }	}
t	        t        j                  |«      d«      }t        t        j                  |	«      |«      }	t	        t        j                  |«      d«      }t        t        j                  |
«      |«      }
||	kD  s||
kD  ry||	||
f}t        }nd|d|f}t        }| ||||f}t        t        |«      «      }|t        |<   	 | j                  j                  t         |«       y# t        j"                  $ r\}dt        |«      vr‚ | j                  j%                  t         t&        «       | j                  j                  t         |«       Y d}~y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   r7   Úidr1   r3   r4   Ú_blit_tcl_nameÚTclErrorÚcreatecommandr>   )r9   Úaggimager;   r<   r:   ÚheightÚwidthÚx1Úy1Úx2Úy2Úbboxptrr=   Úargsr8   Úes                   r+   r5   r5   F   s\  € ô  �:‰:�hÓ€DØ—J‘J˜r �N�M€FˆEØÐØ!Ÿ^™^Ó-Ñ‰ˆˆR‘(�2�rÜ”—‘˜B“ Ó#ˆÜ”—‘˜2“ Ó&ˆÜ”—‘˜B“ Ó#ˆÜ”—‘˜2“ Ó'ˆØ�ŠG˜˜bšØØ�r˜2˜rÐ"ˆÜ.‰	à�e˜Q Ð'ˆÜ*ˆ	ð �t˜W g¨yÐ8€Dô ”�D“‹]€FØ„JˆvÑð3Ø�‰×Ñœ>¨6Õ2øÜ�;‰;ò 3Ø!¬¨Q«Ñ/ØØ�‰×#Ñ#¤N´EÔ:Ø�‰×Ñœ>¨6×2Ñ2ûð	3ús   Ä D) Ä)FÄ<AFÆF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                 ó@   •— d | _         t        ‰| �  |i |¤Ž || _        y ©N)Ú_timerÚsuperÚ__init__Úparent)Úselfr`   rW   ÚkwargsÚ	__class__s       €r+   r_   zTimerTk.__init__   s#   ø€ ØˆŒÜ‰Ñ˜$Ð) &Ò)Øˆ�r?   c                 óŽ   — | j                  «        | j                  j                  | j                  | j                  «      | _        y r\   )Ú_timer_stopr`   ÚafterÚ	_intervalÚ	_on_timerr]   ©ra   s    r+   Ú_timer_startzTimerTk._timer_start„   s.   € Ø×ÑÔØ—k‘k×'Ñ'¨¯©¸¿¹ÓGˆ�r?   c                 ót   — | j                   �%| j                  j                  | j                   «       d | _         y r\   )r]   r`   Úafter_cancelri   s    r+   re   zTimerTk._timer_stopˆ   s)   € Ø�;‰;Ð"Ø�K‰K×$Ñ$ T§[¡[Ô1Øˆ�r?   c                 ó4  •‡ — t         ‰‰ �  «        ‰ j                  su‰ j                  ri‰ j                  dkD  r6‰ j
                  j                  ‰ j                  ‰ j                  «      ‰ _        y ‰ j
                  j                  ˆ fd„«      ‰ _        y d ‰ _        y )Nr   c                  ód   •— ‰ j                   j                  ‰ j                  ‰ j                  «      S r\   )r`   rf   rg   rh   ri   s   €r+   ú<lambda>z#TimerTk._on_timer.<locals>.<lambda>œ   s    ø€ ˜DŸK™K×-Ñ-¨d¯n©n¸d¿n¹nÓM€ r?   )r^   rh   Ú_singler]   rg   r`   rf   Ú
after_idle)ra   rc   s   `€r+   rh   zTimerTk._on_timer�   sm   ù€ Ü‰ÑÔð
 �|Š| §¢Ø�~‰~ Ò!Ø"Ÿk™k×/Ñ/°·±ÀÇÁÓO�•ð #Ÿk™k×4Ñ4ÛMó�•ð ˆD�Kr?   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r_   rj   re   rh   Ú__classcell__©rc   s   @r+   rZ   rZ   |   s    ø„ ÙFôò
Hò÷
ð r?   rZ   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 )!ÚFigureCanvasTkr3   c                 ó   — t         S r\   )ÚFigureManagerTk)Úclss    r+   ro   zFigureCanvasTk.<lambda>¤   s   € ´?€ r?   Nc                 ó"  •‡	‡
‡‡— t         ‰| �  |«       d | _        d | _        | j	                  d¬«      \  }}t        j                  |d||dd¬«      | _        t        j                  | j                  ||¬«      | _	        | j                  j                  |dz  |dz  | j                  ¬«      | _        | j                  j                  d	| j                  «       | j                  j                  d
| j                  «       | j                  j                  d| j                  «       | j                  j                  d| j                   «       | j                  j                  d| j"                  «       | j                  j                  d| j$                  «       | j                  j                  d| j&                  «       dD ](  }| j                  j                  || j(                  «       Œ* dD ](  }| j                  j                  || j*                  «       Œ* dD ](  }| j                  j                  || j,                  «       Œ* dD ](  }| j                  j                  || j.                  «       Œ* | j                  j1                  «       }t3        j4                  | «      Št3        j4                  |«      Šˆ
ˆˆfd„}|j                  d|d«      Š
ˆ	ˆˆfd„}|j                  d|d«      Š	| j                  j7                  «        d | _        d | _        y )NT©ÚphysicalÚwhiter   )ÚmasterÚ
backgroundrQ   rP   ÚborderwidthÚhighlightthickness)r�   rQ   rP   rA   ©Ú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                 óp   •—  ‰«       }|€ ‰«       }|�|j                  d‰«       y |j                  | «      S )Nú<MouseWheel>)ÚunbindÚscroll_event_windows)Úeventra   ÚrootÚscroll_event_windows_idÚweakrootÚweakselfs      €€€r+   rŒ   z5FigureCanvasTk.__init__.<locals>.scroll_event_windowsÏ   s?   ø€ Ù“:ˆDØˆ|Ù“z�ØÐ#Ø—K‘K Ð0GÔHØØ×,Ñ,¨UÓ3Ð3r?   rŠ   ú+c                 ó¶   •—  ‰«       }|€ ‰«       }|�|j                  d‰«       y | j                  |j                  u rt        d|«      j	                  «        y y )Nú	<Destroy>Úclose_event)r‹   ÚwidgetÚ	_tkcanvasr   Ú_process)r�   ra   rŽ   Úfilter_destroy_idr�   r‘   s      €€€r+   Úfilter_destroyz/FigureCanvasTk.__init__.<locals>.filter_destroyÛ   sV   ø€ Ù“:ˆDØˆ|Ù“z�ØÐ#Ø—K‘K Ð->Ô?ØØ�|‰|˜tŸ~™~Ñ-Ü˜=¨$Ó/×8Ñ8Õ:ð .r?   r”   )r^   r_   Ú_idle_draw_idÚ_event_loop_idÚget_width_heightr3   Ú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)ra   Úfigurer�   ÚwÚhÚnamerŽ   rŒ   rš   r™   r�   r�   r‘   rc   s            @@@@€r+   r_   zFigureCanvasTk.__init__¦   s�  ü€ Ü‰Ñ˜Ô Ø!ˆÔØ"ˆÔØ×$Ñ$¨dÐ$Ó3‰ˆˆ1ÜŸ™Ø gØ˜A¨1ÀôDˆŒô Ÿ™Ø—>‘>¨°1ô6ˆŒà&*§n¡n×&AÑ&AØˆq‰D�!�Q‘$˜dŸm™mð 'Bó '-ˆÔ#à�‰×Ñ˜M¨4¯;©;Ô7Ø�‰×Ñ˜G T×%DÑ%DÔEØ�‰×Ñ˜G T§^¡^Ô4Ø�‰×Ñ˜J¨×(@Ñ(@ÔAØ�‰×Ñ˜I t×'>Ñ'>Ô?Ø�‰×Ñ˜I t×'>Ñ'>Ô?Ø�‰×Ñ˜N¨D×,<Ñ,<Ô=Ø>ò 	?ˆDØ�N‰N×Ñ  d×&=Ñ&=Õ>ð	?ðOò 	BˆDà�N‰N×Ñ  d×&@Ñ&@ÕAð	BðOò 	AˆDà�N‰N×Ñ  d×&?Ñ&?Õ@ð	Að
 /ò 	9ˆDØ�N‰N×Ñ  d×&7Ñ&7Õ8ð	9ð �~‰~×,Ñ,Ó.ˆô —;‘;˜tÓ$ˆÜ—;‘;˜tÓ$ˆö	4ð #'§)¡)¨NÐ<PÐRUÓ"VÐö	;ð !ŸI™I k°>À3ÓGÐà�‰× Ñ Ô"à&*ˆÔ#Ø&*ˆÕ#r?   c                 ó†  — d }t         j                  dk(  r4t        | j                  j                  j                  dd«      dz  d«      }n1t         j                  dk(  r| j                  j                  d«      dz  }|�E| j                  |«      r3| j                  d	¬
«      \  }}| j                  j                  ||¬«       y y y )NÚwin32r3   ÚscalinggUUUUUUõ?rA   ÚlinuxÚ1ié`   Tr~   ©rQ   rP   )
ÚsysÚplatformÚroundr—   r3   r4   Úwinfo_fpixelsÚ_set_device_pixel_ratior�   Ú	configure)ra   r�   Úratior¶   r·   s        r+   r¥   z)FigureCanvasTk._update_device_pixel_ratioë   s®   € ØˆÜ�<‰<˜7Ò"ô ˜$Ÿ.™.×+Ñ+×0Ñ0°°yÓAÀWÑMÈqÓQ‰EÜ�\‰\˜WÒ$Ø—N‘N×0Ñ0°Ó6¸Ñ;ˆEØÐ ×!=Ñ!=¸eÔ!Dð ×(Ñ(°$Ð(Ó7‰DˆAˆqØ�N‰N×$Ñ$¨1°QÐ$Õ7ð "EÐr?   c                 ó6  — |j                   |j                  }}| j                  j                  }||z  }||z  }| j                  j	                  ||d¬«       | j
                  j                  | j                  «       | j                  j                  t        |«      t        |«      ¬«       | j
                  j                  t        |dz  «      t        |dz  «      | j                  ¬«      | _        t        d| «      j                  «        | j                  «        y )NF)Úforwardr¿   rA   r…   Úresize_event)rQ   rP   rµ   ÚdpiÚset_size_inchesr—   Údeleter¢   r    rÅ   Úintr¡   r   r˜   Ú	draw_idle)ra   r�   rQ   rP   ÚdpivalÚwinchÚhinchs          r+   r¤   zFigureCanvasTk.resizeû   sÚ   € ØŸ™ U§\¡\ˆvˆð —‘—‘ˆØ˜‘ˆØ˜‘ˆØ�‰×#Ñ# E¨5¸%Ð#Ô@à�‰×Ñ˜d×9Ñ9Ô:Ø�‰×Ñ¤c¨%£j¼¸V»ÐÔEØ&*§n¡n×&AÑ&AÜ�˜‘	‹NœC ¨¡
›O°4·=±=ð 'Bó 'BˆÔ#ä�N DÓ)×2Ñ2Ô4Ø�‰Õr?   c                 ój   ‡ — ‰ j                   ry ˆ fd„}‰ j                  j                  |«      ‰ _         y )Nc                  óN   •— 	 ‰j                  «        d ‰_        y # d ‰_        w xY wr\   )Údrawr›   ©rW   ra   s    €r+   Ú	idle_drawz+FigureCanvasTk.draw_idle.<locals>.idle_draw  s"   ø€ ð*Ø—	‘	”à%)�Õ"ø T�Õ"ús   ƒ ›	$)r›   r—   rq   )ra   rÖ   s   ` r+   rÎ   zFigureCanvasTk.draw_idle  s-   ø€ à×ÒØô	*ð "Ÿ^™^×6Ñ6°yÓ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—   ri   s    r+   Úget_tk_widgetzFigureCanvasTk.get_tk_widget  s   € ð �~‰~Ðr?   c                 óØ   — | j                   j                  |j                  «      | j                  j                  j
                  | j                   j                  |j                  «      z
  fS r\   )r—   ÚcanvasxÚxrµ   r<   rP   ÚcanvasyÚy©ra   r�   s     r+   Ú_event_mpl_coordsz FigureCanvasTk._event_mpl_coords!  sQ   € ð —‘×&Ñ& u§w¡wÓ/à—‘× Ñ ×'Ñ'¨$¯.©.×*@Ñ*@ÀÇÁÓ*IÑIðKð 	Kr?   c                 óž   — t        d| g| j                  |«      ¢­| j                  |«      | j                  |«      |dœŽj	                  «        y )Nr§   )ÚbuttonsÚ	modifiersÚguiEvent)r   rß   Ú_mpl_buttonsÚ_mpl_modifiersr˜   rÞ   s     r+   r§   z"FigureCanvasTk.motion_notify_event(  sO   € ÜÐ(¨$ð 	#Ø×*Ñ*¨5Ó1ñ	#à×,Ñ,¨UÓ3Ø!×0Ñ0°Ó7Ø!ò		#÷ $,¡8¥:r?   c                 ó~   — t        d| g| j                  |«      ¢­| j                  |«      |dœŽj                  «        y )NÚfigure_enter_event©râ   rã   ©r   rß   rå   r˜   rÞ   s     r+   r¨   z!FigureCanvasTk.enter_notify_event/  óA   € ÜÐ*¨Dð 	&Ø×-Ñ-¨eÓ4ñ	&à $× 3Ñ 3°EÓ :Ø$ò	&÷ '/¡h¥jr?   c                 ó~   — t        d| g| j                  |«      ¢­| j                  |«      |dœŽj                  «        y )NÚfigure_leave_eventrè   ré   rÞ   s     r+   r©   z!FigureCanvasTk.leave_notify_event5  rê   r?   c                 ó"  — | j                   j                  «        t        |dd «      }t        j                  dk(  rdddœj                  ||«      }t        d| g| j                  |«      ¢|‘­|| j                  |«      |dœŽj                  «        y )NÚnumÚdarwiné   rA   ©rA   rð   r«   )Údblclickrâ   rã   )
r—   r²   ÚgetattrrÀ   rÁ   Úgetr   rß   rå   r˜   )ra   r�   rò   rî   s       r+   r«   z!FigureCanvasTk.button_press_event;  sŒ   € à�‰× Ñ Ô"ä�e˜U DÓ)ˆÜ�<‰<˜8Ò#Ø˜A‘,×"Ñ" 3¨Ó,ˆCÜÐ'¨ð 	#Ø×*Ñ*¨5Ó1ð	#Ø36ñ	#ØAIØ!×0Ñ0°Ó7Ø!ò	#÷ $,¡8¥:r?   c                 ó*   — | j                  |d¬«       y )NT)rò   )r«   rÞ   s     r+   r¬   z$FigureCanvasTk.button_dblclick_eventG  s   € Ø×Ñ °ÐÕ5r?   c                 óì   — t        |dd «      }t        j                  dk(  rdddœj                  ||«      }t	        d| g| j                  |«      ¢|‘­| j                  |«      |dœŽj                  «        y )Nrî   rï   rð   rA   rñ   r­   rè   )ró   rÀ   rÁ   rô   r   rß   rå   r˜   )ra   r�   rî   s      r+   r­   z#FigureCanvasTk.button_release_eventJ  sy   € Ü�e˜U DÓ)ˆÜ�<‰<˜8Ò#Ø˜A‘,×"Ñ" 3¨Ó,ˆCÜÐ)¨4ð 	#Ø×*Ñ*¨5Ó1ð	#Ø36ñ	#à!×0Ñ0°Ó7Ø!ò	#÷ $,¡8¥:r?   c                 óº   — t        |dd «      }|dk(  rdn|dk(  rdnd}t        d| g| j                  |«      ¢­|| j                  |«      |dœŽj	                  «        y )	Nrî   é   r   é   éÿÿÿÿr   r®   ©Ústeprâ   rã   )ró   r   rß   rå   r˜   )ra   r�   rî   rü   s       r+   r®   zFigureCanvasTk.scroll_eventS  sf   € Ü�e˜U DÓ)ˆØ˜1’H‰q¨¨qª¡"°aˆÜ�> 4ð 	#Ø×*Ñ*¨5Ó1ñ	#Ø8<Ø!×0Ñ0°Ó7Ø!ò	#÷ $,¡8¥:r?   c           
      ó  — |j                   j                  |j                  |j                  «      }|| j                  k7  ry| j                  j                  |j                  |j                  «       z
  «      }| j                  j                  j                  | j                  j                  |j                  |j                  «       z
  «      z
  }|j                  dz  }t        d| |||| j                  |«      |¬«      j                  «        y)zMouseWheel event processorNéx   r®   rû   )r–   Úwinfo_containingÚx_rootÚy_rootr—   rÚ   Úwinfo_rootxrµ   r<   rP   rÜ   Úwinfo_rootyÚdeltar   rå   r˜   )ra   r�   r¶   rÛ   rÝ   rü   s         r+   rŒ   z#FigureCanvasTk.scroll_event_windows[  sÈ   € ð �L‰L×)Ñ)¨%¯,©,¸¿¹ÓEˆØ�—‘ÒØØ�N‰N×"Ñ" 5§<¡<°!·-±-³/Ñ#AÓBˆØ�[‰[×Ñ×$Ñ$Ø�~‰~×%Ñ% e§l¡l°Q·]±]³_Ñ&DÓEñFˆà�{‰{˜SÑ ˆÜ�> 4Ø�a˜d¨d×.AÑ.AÀ%Ó.HØ!ô	#ç#+¡8¥:r?   c                 óÚ  — t         j                  dk(  rWt        j                  dft        j                  dft        j
                  dft        j                  dft        j                  dfgnVt        j                  dft        j
                  dft        j                  dft        j                  dft        j                  dfg}|D ��cg c]  \  }}| j                  |z  sŒ|‘Œ c}}S c c}}w )Nrï   é   i   i   i   i   )	rÀ   rÁ   r   ÚLEFTÚRIGHTÚMIDDLEÚBACKÚFORWARDÚstate)r�   râ   r¸   Úmasks       r+   rä   zFigureCanvasTk._mpl_buttonsi  sÔ   € ô �\‰\˜XÒ%ô ×Ñ˜vÐ&Ü×Ñ Ð'Ü×Ñ Ð)Ü×Ñ˜wÐ'Ü× Ñ  'Ð*ñ
ô ×Ñ˜vÐ&Ü×Ñ Ð(Ü×Ñ Ð(Ü×Ñ˜wÐ'Ü× Ñ  'Ð*ð,
ð 	ð  (1×G™˜˜t°E·K±KÀ$Ó4F’ÓGÐGùÓGs   ÃC'ÃC'©Úexcludec                óÌ   — t         j                  dk(  rg d¢nt         j                  dk(  rg d¢ng d¢}|D ���cg c]  \  }}}| j                  |z  r||k7  r|‘Œ c}}}S c c}}}w )Nrº   )©Úctrlrø   Úcontrol)Úalti   r  ©Úshiftr   r  rï   )r  )r  é   r  r  )Úcmdé   r  )r  )r  r  r  r  )r^   é@   r^   )rÀ   rÁ   r  )r�   r  râ   r¸   r  Úkeys         r+   rå   zFigureCanvasTk._mpl_modifiers  sp   € ô �\‰\˜WÒ$ó	
ô �\‰\˜XÒ%ó+
ò
,
ð 	ð -6÷ :ð :™˜˜t SØ—;‘; Ò%¨'°Sª.ò ô :ð 	:ùô :s   ¹!Ac                 óÞ   — |j                   }t        j                  ||j                  «      }|�?| j	                  ||¬«      }d|v r|r|j                  d«       dj                  g |¢|‘«      S y )Nr  r  r’   )Úcharr	   Ú_unikey_or_keysym_to_mplkeyÚkeysymrå   ÚremoveÚjoin)ra   r�   Úunikeyr  Úmodss        r+   Ú_get_keyzFigureCanvasTk._get_key™  sl   € Ø—‘ˆÜ×/Ñ/°¸¿¹ÓEˆØˆ?Ø×&Ñ& u°cÐ&Ó:ˆDà˜$‰¡6Ø—‘˜GÔ$Ø—8‘8˜L˜d˜L C˜LÓ)Ð)ð r?   c                 ó~   — t        d| | j                  |«      g| j                  |«      ¢­d|iŽj                  «        y )NÚkey_press_eventrã   ©r   r$  rß   r˜   rÞ   s     r+   r¦   zFigureCanvasTk.key_press£  s=   € ÜÐ" DØ—‘˜uÓ%ð	!Ø(,×(>Ñ(>¸uÓ(Eò	!àñ	!ç!)¡¥r?   c                 ó~   — t        d| | j                  |«      g| j                  |«      ¢­d|iŽj                  «        y )NÚkey_release_eventrã   r'  rÞ   s     r+   rª   zFigureCanvasTk.key_release¨  s=   € ÜÐ$ dØ—‘˜uÓ%ð	!Ø(,×(>Ñ(>¸uÓ(Eò	!àñ	!ç!)¡¥r?   c                 ó4   — t        | j                  g|¢­i |¤ŽS r\   )rZ   r—   )ra   rW   rb   s      r+   Ú	new_timerzFigureCanvasTk.new_timer­  s   € ä�t—~‘~Ð7¨Ò7°Ñ7Ð7r?   c                 ó8   — | j                   j                  «        y r\   )r—   Úupdateri   s    r+   Úflush_eventszFigureCanvasTk.flush_events±  s   € à�‰×ÑÕr?   c                 ó  — |dkD  rit        d|z  «      }|dkD  r,| j                  j                  || j                  «      | _        n*| j                  j                  | j                  «      | _        | j                  j                  «        y )Nr   iè  )rÍ   r—   rf   Ústop_event_looprœ   rq   Úmainloop)ra   ÚtimeoutÚmillisecondss      r+   Ústart_event_loopzFigureCanvasTk.start_event_loopµ  ss   € à�QŠ;Ü˜t g™~Ó.ˆLØ˜aÒØ&*§n¡n×&:Ñ&:Ø  $×"6Ñ"6ó'8�Õ#ð '+§n¡n×&?Ñ&?Ø×(Ñ(ó'*�Ô#à�‰×ÑÕ!r?   c                 ó¨   — | j                   r,| j                  j                  | j                   «       d | _         | j                  j                  «        y r\   )rœ   r—   rl   Úquitri   s    r+   r0  zFigureCanvasTk.stop_event_loopÁ  s;   € à×ÒØ�N‰N×'Ñ'¨×(;Ñ(;Ô<Ø"&ˆDÔØ�‰×ÑÕr?   c                 ó~   — 	 | j                   j                  t        |   ¬«       y # t        j                  $ r Y y w xY w)N)Úcursor)r—   rÅ   ÚcursordÚtkinterrM   )ra   r8  s     r+   Ú
set_cursorzFigureCanvasTk.set_cursorÈ  s8   € ð	Ø�N‰N×$Ñ$¬G°F©OÐ$Õ<øÜ×Ñò 	Ùð	ús   ‚#& ¦<»<)NNr\   )F)r   )!rr   rs   rt   Úrequired_interactive_frameworkr   ÚclasspropertyÚmanager_classr_   r¥   r¤   rÎ   rØ   rß   r§   r¨   r©   r«   r¬   r­   r®   rŒ   Ústaticmethodrä   rå   r$  r¦   rª   r+  r.  r4  r0  r;  rv   rw   s   @r+   ry   ry   ¢   s»   ø„ Ø%)Ð"Ø&�D×&Ñ&Ñ'BÓC€MõC+óJ8ò ò BòòKò.ò1ò1ó
.ò6ò.ò.ò.ð ñHó ðHð* Ø)-ó :ó ð:ò2*ò,ò
,ò
8ò ó
"òör?   ry   c                   óp   ‡ — 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                 ó2  •— || _         t        ‰| �	  ||«       | j                   j                  «        | j                  j
                  j                  t        j                  t        j                  d¬«       t        |j                  «       d«      }t        j                  |dd|› �¬«      | _        d| _        t        j                   ||j                  j#                  «       «      r+| j                  j%                  d| j&                  «      | _        d	| _        y )
Nr   )ÚsideÚfillÚexpandr  r¾   Ú
window_dpi)r�   Úvaluer¸   Ú ÚwriteF)Úwindowr^   r_   ÚwithdrawÚcanvasr—   Úpackr3   ÚTOPÚBOTHrÍ   Úwm_frameÚIntVarÚ_window_dpiÚ_window_dpi_cbnamer   Úenable_dpi_awarenessr6   Ú	trace_addÚ_update_window_dpiÚ_shown)ra   rK  rî   rI  Úwindow_framerc   s        €r+   r_   zFigureManagerTk.__init__ß  sÙ   ø€ ØˆŒÜ‰Ñ˜ Ô%Ø�‰×ÑÔð 	�‰×Ñ×"Ñ"¬¯©´R·W±WÀQÐ"ÔGô
 ˜6Ÿ?™?Ó,¨bÓ1ˆÜŸ9™9¨F¸"Ø,6°|°nÐ*EôGˆÔà"$ˆÔÜ×&Ñ& |°V·Y±Y×5IÑ5IÓ5KÔLØ&*×&6Ñ&6×&@Ñ&@Ø˜×0Ñ0ó'2ˆDÔ#ð ˆ�r?   c                 ó”  — t        «       5  t        j                  «       €(t        j                  «        t	        j
                  «        t        j                  d¬«      }|j                  «        t        t        j                  d«      «      }t        j                  ||¬«      }t        t        j                  d«      «      }t        j                  ||¬«      }|j                  d||«        |||¬«      }	 | |	||«      }
t        j                  «       r |
j!                  «        |	j#                  «        |
cd d d «       S # 1 sw Y   y xY w)NÚ
matplotlib)Ú	classNamezimages/matplotlib.png)Úfiler�   zimages/matplotlib_large.pngF©r�   )r,   r	   Ú"_get_running_interactive_frameworkÚ_setup_new_guiappr
   Ú Win32_SetProcessDpiAwareness_maxr3   ÚTkrJ  r7   Ú_get_data_pathr   rŸ   Ú	iconphotor'   Úis_interactiveÚshowrÎ   )r|   Úcanvas_classrµ   rî   rI  Ú
icon_fnameÚicon_imgÚicon_fname_largeÚicon_img_largerK  Úmanagers              r+   Úcreate_with_canvasz"FigureManagerTk.create_with_canvasô  s  € ô /Ó0ñ 	Ü×7Ñ7Ó9ÐAÜ×'Ñ'Ô)Ü!×BÑBÔDÜ—U‘U \Ô2ˆFØ�O‰OÔô œU×1Ñ1Ø'ó)ó *ˆJä×)Ñ)¨zÀ&ÔIˆHä"¤5×#7Ñ#7Ø-ó$/ó  0Ðä$×/Ñ/Ø%¨fô6ˆNð ×Ñ˜U N°HÔ=á! &°Ô8ˆFÙ˜& # vÓ.ˆGÜ×!Ñ!Ô#Ø—‘”Ø× Ñ Ô"Ø÷;	÷ 	ò 	ús   ‹D)D>Ä>Ec                 óÖ   — t        j                  «       }|rG|d   }t        |«      }|j                  ry d|_        	 |j                  j                  «        d|_        y y # d|_        w xY w)Nr   TF)r   Úget_all_fig_managersÚtypeÚ_owns_mainlooprI  r1  )r|   ÚmanagersÚfirst_managerr>  s       r+   Ústart_main_loopzFigureManagerTk.start_main_loop  sj   € ä×+Ñ+Ó-ˆÙØ$ Q™KˆMÜ  Ó/ˆMØ×+Ò+ØØ+/ˆMÔ(ð5Ø×$Ñ$×-Ñ-Ô/à/4�Õ,ð øð 05�Õ,ús   ¼A Á	A(c                 ó$  — | j                   j                  «       }| j                  j                  dd|dz  «       | j                  r0t        | j                  d«      r| j                  j                  «        | j                  j                  «        y )Nr3   r»   éH   Ú_rescale)	rQ  rô   rI  r4   ÚtoolbarÚhasattrru  rK  r¥   )ra   rW   Únewdpis      r+   rU  z"FigureManagerTk._update_window_dpi$  sd   € Ø×!Ñ!×%Ñ%Ó'ˆØ�‰×Ñ˜˜y¨&°2©+Ô6Ø�<Š<œG D§L¡L°*Ô=Ø�L‰L×!Ñ!Ô#Ø�‰×.Ñ.Õ0r?   c           	      óº   — d}||kD  s||kD  r(t         j                  dk(  rt        d|› d|› d|› d�«      ‚| j                  j                  j                  ||¬«       y )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Á   Ú
ValueErrorrK  r—   rÅ   )ra   rQ   rP   Úmax_sizes       r+   r¤   zFigureManagerTk.resize+  sq   € Øˆà�HÒ ¨Ò 1´s·|±|ÀwÒ7NÜð!Ø!&  r¨&¨ð 2"Ø"* ð ,+ð+ó,ð ,ð 	�‰×Ñ×'Ñ'¨e¸FÐ'ÕCr?   c                 óD  ‡ — t        «       5  ‰ j                  s`ˆ fd„}‰ j                  j                  d|«       ‰ j                  j	                  «        ‰ j
                  j                  j                  «        n‰ j
                  j                  «        t        j                  d   r`‰ j
                  j                  j                  j                  dd«       ‰ j
                  j                  j                  j                  dd«       d‰ _        d d d «       y # 1 sw Y   y xY w)Nc                  ó0   •— t        j                  ‰«       y r\   )r   ÚdestroyrÕ   s    €r+   r~  z%FigureManagerTk.show.<locals>.destroy<  s   ø€ Ü—K‘K Õ%r?   ÚWM_DELETE_WINDOWzfigure.raise_windowz-topmostr   r   T)r,   rV  rI  ÚprotocolÚ	deiconifyrK  r—   r²   rÎ   r'   r(   rj  Ú
attributes)ra   r~  s   ` r+   rd  zFigureManagerTk.show9  sÉ   ø€ Ü.Ó0ñ 	Ø—;’;ô&à—‘×$Ñ$Ð%7¸ÔAØ—‘×%Ñ%Ô'Ø—‘×%Ñ%×/Ñ/Õ1à—‘×%Ñ%Ô'Ü�|‰|Ð1Ò2Ø—‘×#Ñ#×*Ñ*×5Ñ5°jÀ!ÔDØ—‘×#Ñ#×*Ñ*×5Ñ5°jÀ!ÔDØˆDŒK÷	÷ 	ñ 	ús   ŒDDÄDc                 ó„  ‡ — ‰ j                   j                  r9‰ j                   j                  j                  ‰ j                   j                  «       ‰ j                   j                  r9‰ j                   j                  j                  ‰ j                   j                  «       ‰ j
                  r&‰ j                  j                  d‰ j
                  «       ˆ fd„}t        j                  «       dk(  r2‰ j                  j                  ‰ j                  j                  d|«       y ‰ j                  j                  «         |«        y )NrH  c                  ó²   •— ‰ j                   j                  «        ‰ j                  r0t        j                  «       s‰ j                   j                  «        y y y r\   )rI  r~  ro  r   Úget_num_fig_managersr6  ri   s   €r+   Údelayed_destroyz0FigureManagerTk.destroy.<locals>.delayed_destroyU  s@   ø€ Ø�K‰K×ÑÔ!à×"Ò"¬3×+CÑ+CÔ+EØ—‘× Ñ Õ"ð ,FÐ"r?   r3   r   )rK  r›   r—   rl   rœ   rR  rQ  Útrace_remover	   r]  rI  rq   rf   r-  )ra   rW   r†  s   `  r+   r~  zFigureManagerTk.destroyH  sÔ   ø€ Ø�;‰;×$Ò$Ø�K‰K×!Ñ!×.Ñ.¨t¯{©{×/HÑ/HÔIØ�;‰;×%Ò%Ø�K‰K×!Ñ!×.Ñ.¨t¯{©{×/IÑ/IÔJØ×"Ò"Ø×Ñ×)Ñ)¨'°4×3JÑ3JÔKô	#ô ×3Ñ3Ó5¸Ò=à�K‰K×"Ñ" 4§;¡;×#4Ñ#4°a¸ÕIà�K‰K×ÑÔ ÙÕr?   c                 ó6   — | j                   j                  «       S r\   ©rI  Úwm_titleri   s    r+   Úget_window_titlez FigureManagerTk.get_window_titleb  s   € Ø�{‰{×#Ñ#Ó%Ð%r?   c                 ó:   — | j                   j                  |«       y r\   r‰  )ra   Útitles     r+   Úset_window_titlez FigureManagerTk.set_window_titlee  s   € Ø�‰×Ñ˜UÕ#r?   c                 ó†   — t        | j                  j                  d«      «      }| j                  j                  d| «       y )Nz-fullscreen)ÚboolrI  r‚  )ra   Úis_fullscreens     r+   Úfull_screen_togglez"FigureManagerTk.full_screen_toggleh  s2   € Ü˜TŸ[™[×3Ñ3°MÓBÓCˆØ�‰×Ñ˜}°-Ð.?Õ@r?   )rr   rs   rt   ru   ro  r_   Úclassmethodrk  rr  rU  r¤   rd  r~  r‹  rŽ  r’  rv   rw   s   @r+   r{   r{   Ï  sb   ø„ ñð €Nôð* ñó ððB ñ5ó ð5ò1òDòòò4&ò$ö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 )ÚNavigationToolbar2TkT)Úpack_toolbarc                óZ  — |€|j                  «       j                  }t        j                  j	                  | |dt        |j                  j                  j                  «      d¬«       i | _	        | j                  D ]y  \  }}}}|€| j                  «        Œ| j                  |t        t        j                  d|› d�«      «      |dv t!        | |«      ¬«      x| j                  |<   }|€Œnt#        ||«       Œ{ t$        j&                  j)                  |d	¬
«      | _        t        j,                  | | j*                  d¬«      }	|	j/                  t        j0                  ¬«       t        j2                  | ¬«      | _        t        j,                  | | j*                  | j4                  t        j0                  ¬«      | _        | j6                  j/                  t        j0                  ¬«       t9        j                  | |«       |r0| j/                  t        j:                  t        j<                  ¬«       yy)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``.
        NrA   é2   )r�   rƒ   rQ   rP   zimages/ú.png)ÚzoomÚpan)ÚtoggleÚcommandé
   )rŽ   Úsizeõ   Â 
Â ©r�   ÚfontÚtext©rB  r\  )r�   r¢  ÚtextvariableÚjustify©rB  rC  )rØ   r�   r3   ÚFramer_   rÍ   rµ   r<   rQ   Ú_buttonsÚ	toolitemsÚ_SpacerÚ_Buttonr7   r	   ra  ró   Úadd_tooltipr:  r¢  ÚFontÚ_label_fontÚLabelrL  r  Ú	StringVarÚmessageÚ_message_labelr   ÚBOTTOMÚX)
ra   rK  rI  r–  r£  Útooltip_textÚ
image_fileÚcallbackÚbuttonÚlabels
             r+   r_   zNavigationToolbar2Tk.__init__n  sÂ  € ð ˆ>Ø×)Ñ)Ó+×2Ñ2ˆFÜ
�‰×Ñ˜$ v¸1Ü # F§M¡M×$6Ñ$6×$<Ñ$<Ó =Àbð 	ô 	Jð ˆŒØ8<¿¹ò 	6Ñ4ˆD�, 
¨HØˆ|à—‘•à/3¯|©|ØÜœ×,Ñ,¨w°z°lÀ$Ð-GÓHÓIØ# Ð6Ü# D¨(Ó3ð	 0<ó 0ð �—‘˜dÑ# fð  Ñ+Ü ¨Õ5ð	6ô #Ÿ<™<×,Ñ,°&¸rÐ,ÓBˆÔô —‘ ¨4×+;Ñ+;ØFôHˆà�
‰
œŸ™ˆ
Ô!ä—|‘|¨4Ô0ˆŒÜ Ÿh™h¨d¸×9IÑ9IØ48·L±LÜ/1¯x©xô9ˆÔð 	×Ñ× Ñ ¤b§h¡hÐ Ô/ä×#Ñ# D¨&Ô1ÙØ�I‰Iœ2Ÿ9™9¬2¯4©4ˆIÕ0ð r?   c                 óö  — | j                  «       D ]Ê  }t        |t        j                  t        j                  f«      r$t        |d«      rt        j                  | |«       ŒPŒQt        |t        j                  «      r%|j                  d¬«       |j                  d¬«       Œ�t        |t        j                  «      rŒ«t        j                  d|j                  «       ŒÌ | j                  j                  d¬«       y	)
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)rP   Ú3p)ÚpadxzUnknown child class %srž  ©rŸ  N)Úwinfo_childrenÚ
isinstancer3   ÚButtonÚCheckbuttonrw  r•  Ú_set_image_for_buttonr¨  rÅ   Úpack_configurer°  Ú_logÚwarningÚwinfo_classr¯  )ra   r–   s     r+   ru  zNavigationToolbar2Tk._rescale¥  sÃ   € ð ×)Ñ)Ó+ò 	KˆFÜ˜&¤2§9¡9¬b¯n©nÐ"=Ô>Ü˜6 =Ô1ä(×>Ñ>¸tÀVÕLð Ü˜F¤B§H¡HÔ-Ø× Ñ ¨Ð Ô.Ø×%Ñ%¨4Ð%Õ0Ü˜F¤B§H¡HÔ-Øä—‘Ð5°v×7IÑ7IÕJð	Kð 	×Ñ×"Ñ"¨Ð"Õ+r?   c                 ó  — dt         j                  fdt         j                  ffD ]^  \  }}|| j                  v sŒ| j                  |k(  r| j                  |   j                  «        ŒB| j                  |   j                  «        Œ` y )NÚZoomÚPan)r   ÚZOOMÚPANr©  ÚmodeÚselectÚdeselect)ra   r£  rÏ  s      r+   Ú_update_buttons_checkedz,NavigationToolbar2Tk._update_buttons_checkedÀ  sn   € à"¤E§J¡JÐ/°%¼¿¹Ð1CÐDò 	3‰JˆD�$Ø�t—}‘}Ò$Ø—9‘9 Ò$Ø—M‘M $Ñ'×.Ñ.Õ0à—M‘M $Ñ'×0Ñ0Õ2ñ	3r?   c                 ó>   •— t        ‰| �  |Ž  | j                  «        y r\   )r^   r›  rÒ  ©ra   rW   rc   s     €r+   r›  zNavigationToolbar2Tk.panÉ  s   ø€ Ü‰‰�TÑØ×$Ñ$Õ&r?   c                 ó>   •— t        ‰| �  |Ž  | j                  «        y r\   )r^   rš  rÒ  rÔ  s     €r+   rš  zNavigationToolbar2Tk.zoomÍ  s   ø€ Ü‰‰�dÑØ×$Ñ$Õ&r?   c                 ó:   — | j                   j                  |«       y r\   )r²  Úset©ra   Úss     r+   Úset_messagez NavigationToolbar2Tk.set_messageÑ  s   € Ø�‰×Ñ˜Õr?   c                 óŠ  — | j                   j                  r9| j                   j                  j                  | j                   j                  «       | j                   j                  r9| j                   j                  j                  | j                   j                  «       | j                   j
                  j                  j                  }||z
  }||z
  }| j                   j                  j                  ||||«      | j                   _        | j                   j                  j                  ||||dd¬«      | j                   _        y )Nr€   )rð   rð   )ÚoutlineÚdash)	rK  r´   r—   rÌ   r³   rµ   r<   rP   Úcreate_rectangle)ra   r�   Úx0Úy0rR   rS   rP   s          r+   Údraw_rubberbandz$NavigationToolbar2Tk.draw_rubberbandÔ  sò   € à�;‰;×-Ò-Ø�K‰K×!Ñ!×(Ñ(¨¯©×)KÑ)KÔLØ�;‰;×-Ò-Ø�K‰K×!Ñ!×(Ñ(¨¯©×)KÑ)KÔLØ—‘×#Ñ#×(Ñ(×/Ñ/ˆØ�b‰[ˆØ�b‰[ˆà�K‰K×!Ñ!×2Ñ2Ø�B˜˜Bó ð 	�‰Ô*ð �K‰K×!Ñ!×2Ñ2Ø�B˜˜B¨°fð 3ó >ð 	�‰Õ*r?   c                 ó†  — | j                   j                  rJ| j                   j                  j                  | j                   j                  «       d | j                   _        | j                   j                  rK| j                   j                  j                  | j                   j                  «       d | j                   _        y y r\   )rK  r´   r—   rÌ   r³   ri   s    r+   Úremove_rubberbandz&NavigationToolbar2Tk.remove_rubberbandä  s}   € Ø�;‰;×-Ò-Ø�K‰K×!Ñ!×(Ñ(¨¯©×)KÑ)KÔLØ15ˆD�K‰KÔ.Ø�;‰;×-Ò-Ø�K‰K×!Ñ!×(Ñ(¨¯©×)KÑ)KÔLØ15ˆD�K‰KÕ.ð .r?   c           	      ó&  ‡‡— ‰j                   €yt        j                  d‰j                   «      }|j                  |j                  j                  dd«      «      }‰j                  d«      }ˆfd„Šˆfd„}d„ }t        j                  |d	kD  r|j                  «       r|n|«      5 }|j                  d
«      }t        j                  |j                  ||f«      | ¬«      }|‰_        dt        j                   ‰j#                  ‰j%                  d«      «      «      z  }	 |||	«      }
t        j                  |
j                  ||f«      | ¬«      }|‰_        ddd«        |d«      rdi}ndi}t)        ‰t*        j,                  «      rh‰j%                  d«      dk7  rT| j.                  dk7  rd}n/ ‰d«      \  }}} ‰d«      \  }}}||z   dz  ||z   dz  ||z   dz  f} ||«      r|d<   n|d<    ‰j0                  di |¤dddœ¤Ž y# 1 sw Y   Œ´xY w)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                 óD   •— ‰j                  ‰j                  | «      «      S r\   )Ú	winfo_rgbÚcget)Ú
color_namer¹  s    €r+   Ú
_get_colorz>NavigationToolbar2Tk._set_image_for_button.<locals>._get_colorý  s   ø€ à×#Ñ# F§K¡K°
Ó$;Ó<Ð<r?   c                 óP   •— t        | t        «      r ‰| «      } t        | «      dk  S )Ng    àÿß@)rÂ  r7   rF   )Úcolorrê  s    €r+   Ú_is_darkz<NavigationToolbar2Tk._set_image_for_button.<locals>._is_dark  s&   ø€ Ü˜%¤Ô%Ù" 5Ó)�Ü�u“: 	Ñ)Ð)r?   c                 óÀ   — t        j                  | «      j                  «       }|dd d…f   dk(  j                  d¬«      }|||d d…f<   t	        j
                  |d¬«      S )N.rð   r   rú   )ÚaxisÚRGBA)rÏ  )rB   rC   ÚcopyÚallr   Ú	fromarray)r†   rì  Ú
image_dataÚ
black_masks       r+   Ú_recolor_iconzANavigationToolbar2Tk._set_image_for_button.<locals>._recolor_icon  sa   € ÜŸ™ EÓ*×/Ñ/Ó1ˆJØ$ S¨"¨1¨" WÑ-°Ñ2×7Ñ7¸RÐ7Ó@ˆJØ).ˆJ�z 2 A 2�~Ñ&Ü—?‘? :°FÔ;Ð;r?   é   rð  r\  g ààào?r*   r‚   r†   ÚselectcolorrG  Úx11ÚactivebackgroundrA   Úselectimage)rP   rQ   © )r¼  r	   ra  Ú	with_namer¸   ÚreplaceÚwinfo_pixelsr   ÚopenÚexistsÚconvertr   rŸ   r¤   Ú_ntimagerB   Úarrayrç  rè  Ú_ntimage_altrÂ  r3   rÄ  Ú_windowingsystemrÅ   )ra   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  ù€ ð ×ÑÐ%Øô ×+Ñ+¨H°f×6HÑ6HÓIˆØ!×+Ñ+Ø×Ñ×%Ñ% f¨lÓ;ó=ˆ
à×"Ñ" 5Ó)ˆô	=ô	*ò
	<ô �Z‰Z t¨b¢y°Z×5FÑ5FÔ5H™
Ø)ó+ð 	,Ø.0à—‘˜FÓ#ˆBÜ×&Ñ& r§y¡y°$¸°Ó'>ÀtÔLˆEØ#ˆFŒOð &¬¯©Ø× Ñ  §¡¨\Ó!:Ó;ó*=ñ =ˆJá" 2 zÓ2ˆFÜ×*Ñ*Ø—‘˜t T˜lÓ+°Dô:ˆIà"+ˆFÔ÷	,ñ �LÔ!ð
 $ YÐ/‰Là# UÐ+ˆLô
 �vœrŸ~™~Ô.Ø—‘˜MÓ*¨bÒ0à×$Ñ$¨Ò-Ø+‘ñ
 (¨Ó6‘
��B˜Ù'Ð(:Ó;‘
��B˜Ø " 2¡ q™y¨2¨b©5°!©)°b¸±e¸Q±YÐ?�Ù˜Ô$Ø.7�˜]Ò+à.3�˜]Ñ+àˆ×ÑÑC˜<ÐC°¸UÕC÷Y	,ð 	,ús   Â%B/HÈHc           
      ón  — |st        j                  | ||ddd¬«      }n:t        j                  | ¬«      }t        j                  | ||d|ddd¬«      }||_        ||_        |�t        j                  | |«       n|j                  | j                  ¬«       |j                  t         j                  ¬	«       |S )
NÚflatÚgroover   )r�   r£  r�  ÚreliefÚ
overreliefrƒ   r\  F)r�   r£  r�  ÚindicatoronÚvariableÚ	offreliefr  rƒ   )r¢  r¤  )r3   rÃ  rP  rÄ  Úvarr¼  r•  rÅ  rÅ   r¯  rL  r  )ra   r£  r·  rœ  r�  Úbr  s          r+   r¬  zNavigationToolbar2Tk._Button;  s£   € ÙÜ—	‘	Ø $°Ø¨(Àô‰Aô —)‘) 4Ô(ˆCÜ—‘Ø $°ÀUØ¨¸8ØôˆAð
 ˆAŒEØ"ˆŒØÐ!ä ×6Ñ6°t¸QÕ?à�K‰K˜T×-Ñ-ˆKÔ.Ø	�‰”B—G‘GˆÔØˆr?   c                 ó–   — t        j                  | dt         j                  d¬«      }|j                  t         j                  d¬«       |S )Nr½  ÚDarkGray)r�   rP   r  Úbgr¾  )rB  r¿  )r3   r¨  ÚRIDGErL  r  rØ  s     r+   r«  zNavigationToolbar2Tk._SpacerW  s3   € ä�H‰H˜D¨´r·x±xÀJÔOˆØ	�‰”B—G‘G $ˆÔ'Øˆr?   c           	      óÈ  — | j                   j                  «       }t        |j                  «       «      D ��cg c]  \  }}|dj	                  d„ |D «       «      f‘Œ! }}}| j                   j                  «       }| j                   j                  «       |   }t        j                  | j                   j                  «       |«      }d}	t        j                  j                  t        j                  d   «      }
t        j                   | j                   j#                  «       «      j$                  }t&        j(                  j+                  | j                   j                  «       j,                  d||	|
||¬«      }|dv ry |
dk7  r9t        j                  j/                  t1        |«      «      t        j                  d<   t        j                   |«      j2                  dd  dk7  rd }n||j5                  «          d	   }	 | j                   j6                  j9                  ||¬
«       |S c c}}w # t:        $ r3}t&        j<                  j?                  dt1        |«      «       Y d }~y d }~ww xY w)Nú c              3   ó&   K  — | ]	  }d |› �–— Œ y­w)z*.Nrü  )Ú.0Úexts     r+   ú	<genexpr>z3NavigationToolbar2Tk.save_figure.<locals>.<genexpr>`  s   è ø€ Ò7¨3˜b  œJÑ7ùs   ‚rG  zsavefig.directoryzSave the figure)r�   r�  Ú	filetypesÚdefaultextensionÚ
initialdirÚinitialfileÚtypevariable)rG  rü  r   r   )ÚformatzError saving file) rK  Úget_supported_filetypes_groupedÚsortedÚitemsr!  Úget_default_filetypeÚget_supported_filetypesr3   r±  rØ   ÚosÚpathÚ
expanduserr'   r(   ÚpathlibÚPathÚget_default_filenameÚstemr:  Ú
filedialogÚasksaveasfilenamer�   Údirnamer7   Úsuffixrô   rµ   ÚsavefigÚ	ExceptionÚ
messageboxÚ	showerror)ra   rW   r'  r¸   ÚextsÚtk_filetypesÚdefault_extensionÚdefault_filetypeÚfiletype_variabler(  r)  r*  ÚfnameÚ	extensionrX   s                  r+   Úsave_figurez NavigationToolbar2Tk.save_figure]  s  € Ø—K‘K×?Ñ?ÓAˆ	ô % Y§_¡_Ó%6Ó7÷
á��dð �3—8‘8Ñ7°$Ô7Ó7Ò8ð
ˆñ 
ð
 !ŸK™K×<Ñ<Ó>ÐØŸ;™;×>Ñ>Ó@ÐARÑSÐÜŸL™L¨¯©×)BÑ)BÓ)DÐFVÓWÐð ÐÜ—W‘W×'Ñ'¬¯©Ð5HÑ(IÓJˆ
ô —l‘l 4§;¡;×#CÑ#CÓ#EÓF×KÑKˆÜ×"Ñ"×4Ñ4Ø—;‘;×,Ñ,Ó.×5Ñ5Ø#Ø"Ø-Ø!Ø#Ø*ð 5ó ˆð �HÑØà˜Òä—‘—‘¤ E£
Ó+ô �L‰LÐ,Ñ-ô
 �<‰<˜Ó×%Ñ% a bÐ)¨RÒ/Ø‰Ià!Ð"3×"7Ñ"7Ó"9Ñ:¸1Ñ=ˆIð	FØ�K‰K×Ñ×&Ñ& u°YÐ&Ô?ØˆLùó]
øô^ ò 	FÜ×Ñ×(Ñ(Ð)<¼cÀ!»f×EÑEûð	Fús   ·$HÇ6(H% È%	I!È.)IÉI!c                 ód  — t         j                  t         j                  dœ}| j                  j                  dkD  }| j                  j                  t        | j                  «      dz
  k  }d| j                  v r||   | j                  d   d<   d| j                  v r||   | j                  d   d<   y y )N)TFr   r   ÚBackr  ÚForward)r3   ÚNORMALÚDISABLEDÚ
_nav_stackÚ_posÚlenr©  )ra   Ú	state_mapÚcan_backÚcan_forwards       r+   Úset_history_buttonsz(NavigationToolbar2Tk.set_history_buttons‘  s—   € ÜŸ9™9¬R¯[©[Ñ9ˆ	Ø—?‘?×'Ñ'¨!Ñ+ˆØ—o‘o×*Ñ*¬S°·±Ó-AÀAÑ-EÑEˆØ�T—]‘]Ñ"Ø-6°xÑ-@ˆD�M‰M˜&Ñ! 'Ñ*Ø˜Ÿ™Ñ%Ø09¸+Ñ0FˆD�M‰M˜)Ñ$ WÒ-ð &r?   r\   )rr   rs   rt   r_   ru  rÒ  r›  rš  rÚ  rá  rã  rÅ  r¬  r«  rH  rT  rv   rw   s   @r+   r•  r•  m  sR   ø„ ð51¸Dô 51òn,ò63ô'ô'òò?ò 6òMDò^ò8ò2FöhGr?   r•  c                 ón   ‡ ‡‡— d Šˆˆˆ fd„}ˆfd„}‰ j                  d|«       ‰ j                  d|«       y )Nc                 ó:  •— ‰s‰sy‰j                  d«      \  }}}}|‰j                  «       z   ‰j                  «       z   }|‰j                  «       z   }t	        j
                  ‰«      Š‰j                  d«       ‰j                  d|› d|› �«       	 ‰j                  j                  dd‰j                  dd«       t	        j                  ‰‰t        j                  t        j                  d¬	«      }|j                  d¬
«       y# t        j                  $ r Y Œ^w xY w)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  r3   ÚToplevelÚoverrideredirectÚgeometryr4   Ú_wrM   r°  r  ÚSOLIDrL  )r�   rÛ   rÝ   Ú_rº  r£  Ú	tipwindowr–   s        €€€r+   Úshowtipzadd_tooltip.<locals>.showtipž  sþ   ø€ ñ ™DØØ—[‘[ Ó*‰
ˆˆ1ˆa�Ø�×"Ñ"Ó$Ñ$ v×'9Ñ'9Ó';Ñ;ˆØ�×"Ñ"Ó$Ñ$ˆÜ—K‘K Ó'ˆ	Ø×"Ñ" 1Ô%Ø×Ñ˜Q˜q˜c  1 #˜;Ô'ð	Ø�L‰L×ÑÐAØ% y§|¡|Ø$ mô5ô
 —‘˜¨´r·w±wÜ "§¡°aô9ˆà�
‰
˜ˆ
Õøô	 �{‰{ò 	Ùð	ús   Â)D ÄDÄDc                 ó.   •— ‰r‰j                  «        d Šy r\   )r~  )r�   rc  s    €r+   Úhidetipzadd_tooltip.<locals>.hidetip³  s   ø€ áØ×ÑÔØ‰	r?   r‡   rˆ   )r£   )r–   r£  rd  rf  rc  s   ``  @r+   r­  r­  ›  s0   ú€ Ø€Iöô*ð ‡K�K�	˜7Ô#Ø
‡K�K�	˜7Õ#r?   c                   ó   — e Zd Zd„ Zd„ Zy)ÚRubberbandTkc                 óT   — t         j                  | j                  «       d ||||«       y r\   )r•  rá  Ú"_make_classic_style_pseudo_toolbar)ra   rß  rà  rR   rS   s        r+   rá  zRubberbandTk.draw_rubberband¿  s'   € Ü×,Ñ,Ø×3Ñ3Ó5°t¸RÀÀRÈõ	Mr?   c                 óJ   — t         j                  | j                  «       «       y r\   )r•  rã  rj  ri   s    r+   rã  zRubberbandTk.remove_rubberbandÃ  s   € Ü×.Ñ.Ø×3Ñ3Ó5õ	7r?   N)rr   rs   rt   rá  rã  rü  r?   r+   rh  rh  ½  s   „ òMó7r?   rh  c                   óD   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)Ú	ToolbarTkNc                 ó¬  — t        j                  | |«       |€.| j                  j                  j	                  «       j
                  }| j                  j                  j                  j                  j                  \  }}d||z
  }}t        j                  j                  | |t        |«      t        |«      d¬«       t        j                  j                  d¬«      | _        t        j                   | | j                  d¬«      }|j#                  t        j$                  ¬«       t        j&                  | ¬	«      | _        t        j                   | | j                  | j(                  ¬
«      | _        | j*                  j#                  t        j$                  ¬«       i | _        | j#                  t        j.                  t        j0                  ¬«       i | _        y )Nr˜  rA   )r�   rQ   rP   rƒ   rž  rÀ  r   r¡  r¤  r\  )r�   r¢  r¥  r§  )r   r_   ÚtoolmanagerrK  rØ   r�   rµ   r<   Ú	intervalxr3   r¨  rÍ   r:  r¢  r®  r¯  r°  rL  r  r±  Ú_messager³  Ú
_toolitemsrM  rµ  Ú_groups)ra   ro  rI  ÚxminÚxmaxrP   rQ   rº  s           r+   r_   zToolbarTk.__init__É  sV  € Ü×"Ñ" 4¨Ô5Øˆ>Ø×%Ñ%×,Ñ,×:Ñ:Ó<×CÑCˆFØ×%Ñ%×,Ñ,×3Ñ3×8Ñ8×BÑB‰
ˆˆdØ˜D 4™K�ˆÜ
�‰×Ñ˜$ vÜ # E£
´3°v³;Ø&'ð 	ô 	)ô #Ÿ<™<×,Ñ,°"Ð,Ó5ˆÔô
 —‘ ¨4×+;Ñ+;ØFôHˆà�
‰
œŸ™ˆ
Ô!ÜŸ™¨DÔ1ˆŒÜ Ÿh™h¨d¸×9IÑ9IØ48·M±MôCˆÔà×Ñ× Ñ ¤b§h¡hÐ Ô/ØˆŒØ�	‰	”r—v‘v¤B§D¡Dˆ	Ô)Øˆ�r?   c                 ó,   — t         j                  | «      S r\   )r•  ru  ri   s    r+   ru  zToolbarTk._rescaleâ  s   € Ü#×,Ñ,¨TÓ2Ð2r?   c                 ón  ‡ ‡— ‰ j                  |«      }|j                  «       }|t        |«      k\  s|dk  rd }	n||   }	t        j	                  |‰||ˆˆ fd„«      }
|
j                  |	¬«       |�t        |
|«       ‰ j                  j                  ‰g «       ‰ j                  ‰   j                  |
«       y )Nr   c                  ó&   •— ‰j                  ‰ «      S r\   )Ú_button_click)r¸   ra   s   €€r+   ro   z(ToolbarTk.add_toolitem.<locals>.<lambda>î  s   ø€ °d×6HÑ6HÈÓ6N€ r?   )Úbefore)
Ú_get_groupframeÚpack_slavesrP  r•  r¬  rÆ  r­  rr  Ú
setdefaultÚappend)ra   r¸   ÚgroupÚpositionr·  Údescriptionrœ  Úframerá   rz  r¹  s   ``         r+   Úadd_toolitemzToolbarTk.add_toolitemå  sª   ù€ à×$Ñ$ UÓ+ˆØ×#Ñ#Ó%ˆØ”s˜7“|Ò# x°!¢|Ø‰Fà˜XÑ&ˆFÜ%×-Ñ-¨e°T¸:ÀvÜ.NóPˆà×Ñ VÐÔ,ØÐ"Ü˜ Ô,Ø�‰×"Ñ" 4¨Ô,Ø�‰˜Ñ×$Ñ$ VÕ,r?   c                 ó@  — || j                   vr‚| j                   r| j                  «        t        j                  | d¬«      }|j	                  t        j
                  t        j                  ¬«       | j                  |_        || j                   |<   | j                   |   S )Nr   )r�   rƒ   r§  )rs  Ú_add_separatorr3   r¨  rL  r  ÚYr¯  )ra   r  r‚  s      r+   r{  zToolbarTk._get_groupframeõ  st   € Ø˜Ÿ™Ñ$Ø�|Š|Ø×#Ñ#Ô%Ü—H‘H D°aÔ8ˆEØ�J‰JœBŸG™G¬"¯$©$ˆJÔ/Ø $× 0Ñ 0ˆEÔØ"'ˆD�L‰L˜ÑØ�|‰|˜EÑ"Ð"r?   c                 ó,   — t         j                  | «      S r\   )r•  r«  ri   s    r+   r…  zToolbarTk._add_separatorÿ  s   € Ü#×+Ñ+¨DÓ1Ð1r?   c                 ó&   — | j                  |«       y r\   )Útrigger_tool)ra   r¸   s     r+   ry  zToolbarTk._button_click  s   € Ø×Ñ˜$Õr?   c                 ó�   — || j                   vry | j                   |   D ]%  }|r|j                  «        Œ|j                  «        Œ' y r\   )rr  rÐ  rÑ  )ra   r¸   ÚtoggledÚtoolitems       r+   Útoggle_toolitemzToolbarTk.toggle_toolitem  sB   € Ø�t—‘Ñ&ØØŸ™¨Ñ-ò 	$ˆHÙØ—‘Õ!à×!Ñ!Õ#ñ		$r?   c                 óf   — | j                   j                  |g «      D ]  }|j                  «        Œ y r\   )rr  r2   Úpack_forget)ra   r¸   rŒ  s      r+   Úremove_toolitemzToolbarTk.remove_toolitem  s.   € ØŸ™×+Ñ+¨D°"Ó5ò 	#ˆHØ× Ñ Õ"ñ	#r?   c                 ó:   — | j                   j                  |«       y r\   )rq  r×  rØ  s     r+   rÚ  zToolbarTk.set_message  s   € Ø�‰×Ñ˜!Õr?   r\   )rr   rs   rt   r_   ru  rƒ  r{  r…  ry  r�  r�  rÚ  rü  r?   r+   rm  rm  È  s/   „ óò23ò-ò #ò2ò ò$ò#ór?   rm  c                   ó   — e Zd Zd„ Zy)ÚSaveFigureTkc                 óJ   — t         j                  | j                  «       «       y r\   )r•  rH  rj  ©ra   rW   s     r+   ÚtriggerzSaveFigureTk.trigger  s   € Ü×(Ñ(Ø×3Ñ3Ó5õ	7r?   N©rr   rs   rt   r–  rü  r?   r+   r“  r“    s   „ ó7r?   r“  c                   ó   — e Zd Zd„ Zy)ÚConfigureSubplotsTkc                 ó.   — t         j                  | «       y r\   )r•  Úconfigure_subplotsr•  s     r+   r–  zConfigureSubplotsTk.trigger  s   € Ü×/Ñ/°Õ5r?   Nr—  rü  r?   r+   r™  r™    s   „ ó6r?   r™  c                   ó   — e Zd Zd„ Zy)ÚHelpTkc                 óŽ   ‡— t        | j                  j                  j                  | j	                  «       dg«      Šˆfd„‰_        y )NÚOKc                 óL   •— ‰j                   j                  j                  «       S r\   )r‚  r�   rJ  )rî   Údialogs    €r+   ro   z HelpTk.trigger.<locals>.<lambda>(  s   ø€  &§,¡,×"5Ñ"5×">Ñ">Ó"@€ r?   )r   rµ   rK  r—   Ú_get_help_textÚdone)ra   rW   r¡  s     @r+   r–  zHelpTk.trigger%  s7   ø€ ÜØ�K‰K×Ñ×(Ñ(¨$×*=Ñ*=Ó*?À$ÀóIˆã@ˆ�r?   Nr—  rü  r?   r+   r�  r�  #  s   „ óAr?   r�  c                   óD   — e Zd Zej                  ZeZeZ	ej                  Zy)Ú
_BackendTkN)rr   rs   rt   r3   Ú	TkVersionÚbackend_versionry   ÚFigureCanvasr{   ÚFigureManagerrr  r1  rü  r?   r+   r¥  r¥  0  s    „ à—l‘l€OØ!€LØ#€MØ×.Ñ.�Hr?   r¥  r\   )XÚuuidr°   Ú
contextlibr   ÚloggingrG   Úos.pathr2  r5  rÀ   r:  r3   Útkinter.filedialogÚtkinter.fontÚtkinter.messageboxÚtkinter.simpledialogr   ÚnumpyrB   ÚPILr   r   rY  r'   r   r   r	   r
   Úmatplotlib.backend_basesr   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmatplotlib._pylab_helpersr   rG  r   r   r   Ú	getLoggerrr   rÇ  ÚMOVEÚHANDÚPOINTERÚSELECT_REGIONÚWAITÚRESIZE_HORIZONTALÚRESIZE_VERTICALr9  r,   r1   Úuuid4ÚhexrL   r>   r5   rZ   ry   r{   r¨  r•  r­  Ú_register_tool_classÚRubberbandBaserh  rm  ÚSaveFigureBaser“  ÚConfigureSubplotsBaser™  ÚToolHelpBaser�  ÚToolbarÚ_toolbar2_classÚ_toolmanager_toolbar_classÚexportr¥  rü  r?   r+   ú<module>rÉ     sT  ðÛ Û Ý %Û Û Û Û Û 
Û Û Û Û Ý -ã ß ã ß DÓ D÷B÷ B÷ B÷ Bõ *Ý ß Fð €w×Ñ˜Ó"€à‡L�L�'Ø‡L�L�'Ø‡O�O�WØ×Ñ˜;Ø‡L�L�'Ø×ÑÐ2Ø×ÑÐ0ð€ð ñDó ðDð €
à˜z˜tŸz™z›|×/Ñ/Ñ/€òó33ôl#ˆiô #ôLjÐ%ô jôZ	[AÐ'ô [Aô|kGÐ-¨r¯x©xô kGò\	$ðD $€×#Ñ# NÓ3ô7�=×/Ñ/ó 7ó 4ð7ôKÐ! 2§8¡8ô Kð\ $€×#Ñ# NÓ3ô7�=×/Ñ/ó 7ó 4ð7ð $€×#Ñ# NÓ3ô6˜-×=Ñ=ó 6ó 4ð6ð
 $€×#Ñ# NÓ3ôAˆ]×'Ñ'ó Aó 4ðAð €Ø"6€Ô Ø-6€Ô *ð 
‡�ô/�ó /ó ñ/r?   