Ë
    µ2Úi¸¿  ã                   ó¨  — d 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mZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&Z& ejN                  e(«      Z)dZ* ejV                  d	«      d
„ «       Z, G d„ de«      Z- ej\                  dddddd¬«       G d„ de«      «       Z/ G d„ de«      Z0 G d„ dee&jb                  «      Z2 G d„ de2«      Z3 G d„ de&jh                  «      Z5 G d„ de«      Z6d „ Z7d!„ Z8 G d"„ d#ee&jr                  «      Z: G d$„ d%ee&jr                  «      Z; ejx                  e2«       G d&„ d'ejz                  «      «       Z> ejx                  e2«       G d(„ d)ej~                  «      «       Z@ ejx                  e2«       G d*„ d+ej‚                  «      «       ZB G d,„ d-e&j†                  «      ZD ejx                  e2«       G d.„ d/ejŠ                  «      «       ZF ejx                  e2«       G d0„ d1ejŽ                  «      «       ZHe:e6_I        e;e6_J        ej–                   G d2„ d3e«      «       ZLy)4zÒ
A wxPython backend for matplotlib.

Originally contributed by Jeremy O'Donoghue (jeremy@o-donoghue.com) and John
Hunter (jdhunter@ace.bsd.uchicago.edu).

Copyright (C) Jeremy O'Donoghue & John Hunter, 2003-4.
é    N)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚGraphicsContextBaseÚMouseButtonÚNavigationToolbar2ÚRendererBaseÚ	TimerBaseÚToolContainerBaseÚcursorsÚ
CloseEventÚKeyEventÚLocationEventÚ
MouseEventÚResizeEvent)Ú_apiÚcbookÚbackend_tools)ÚGcf)ÚPath)ÚAffine2DéK   é   c                  óz   — t        j                  d«      } | j                  d«       t        j                  «        | S )NFT)ÚwxÚAppÚSetExitOnFrameDeleter   Ú_setup_new_guiapp)Úwxapps    úU/var/www/html/acx/venv/lib/python3.12/site-packages/matplotlib/backends/backend_wx.pyÚ_create_wxappr!   +   s.   € ä�F‰F�5‹M€EØ	×Ñ˜tÔ$Ü	×ÑÔØ€Ló    c                   ó4   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚTimerWxz/Subclass of `.TimerBase` using wx.Timer events.c                 óŒ   •— t        j                  «       | _        | j                  | j                  _        t        ‰| �  |i |¤Ž y ©N)r   ÚTimerÚ_timerÚ	_on_timerÚNotifyÚsuperÚ__init__)ÚselfÚargsÚkwargsÚ	__class__s      €r    r,   zTimerWx.__init__6   s2   ø€ Ü—h‘h“jˆŒØ!Ÿ^™^ˆ�‰ÔÜ‰Ñ˜$Ð) &Ó)r"   c                 ód   — | j                   j                  | j                  | j                  «       y r&   )r(   ÚStartÚ	_intervalÚ_single©r-   s    r    Ú_timer_startzTimerWx._timer_start;   s   € Ø�‰×Ñ˜$Ÿ.™.¨$¯,©,Õ7r"   c                 ó8   — | j                   j                  «        y r&   )r(   ÚStopr5   s    r    Ú_timer_stopzTimerWx._timer_stop>   s   € Ø�‰×ÑÕr"   c                 óZ   — | j                   j                  «       r| j                  «        y y r&   )r(   Ú	IsRunningr6   r5   s    r    Ú_timer_set_intervalzTimerWx._timer_set_intervalA   s#   € Ø�;‰;× Ñ Ô"Ø×ÑÕð #r"   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   r6   r9   r<   Ú__classcell__©r0   s   @r    r$   r$   3   s   ø„ Ù9ô*ò
8òö r"   r$   z2.0r   Úbackendz
the futureÚwxaggz7See the Matplotlib usage FAQ for more info on backends.)ÚnameÚobj_typeÚremovalÚalternativeÚaddendumc                   ó4  ‡ — e Zd ZdZi dej
                  “dej
                  “dej
                  “dej                  “dej                  “dej                  “dej                  “d	ej                  “d
ej                  “dej
                  “dej
                  “dej                  “dej                  “dej                  “dej                  “dej                  “dej                  “dej                  i¥Zej                  ej                  ej                  dœZej                  ej                  ej                  ej                   ej"                  ej"                  ej"                  dœZˆ fd„Zd„ Zd„ Zd„ Zd„ Zed„ «       Zd"d„Zd„ Zd#d„Zd„ Zd „ Zd!„ Zˆ xZ S )$Ú
RendererWxzÎ
    The renderer handles all the drawing primitives using a graphics
    context instance that controls the colors/styles. It acts as the
    'renderer' instance used by many classes in the hierarchy.
    éd   éÈ   é,  i�  iô  iX  i¼  i   i„  Ú
ultralightÚlightÚnormalÚmediumÚsemiboldÚboldÚheavyÚ	ultraboldÚblack)ÚitalicrQ   Úoblique)ÚSansÚRomanÚScriptÚ
DecorativeÚModernÚCourierÚcourierc                 óì   •— t         ‰| �  «        t        j                  dt	        | «      «       |j                  «       | _        |j                  «       | _        || _	        i | _
        || _        d| _        y)z)Initialise a wxWindows renderer instance.ú%s - __init__()N)r+   r,   Ú_logÚdebugÚtypeÚGetWidthÚwidthÚ	GetHeightÚheightÚbitmapÚfontdÚdpiÚgc)r-   rj   rl   r0   s      €r    r,   zRendererWx.__init__~   s[   ø€ ä‰ÑÔÜ�
‰
Ð$¤d¨4£jÔ1Ø—_‘_Ó&ˆŒ
Ø×&Ñ&Ó(ˆŒØˆŒØˆŒ
ØˆŒØˆ�r"   c                  ó   — y)NT© r5   s    r    ÚflipyzRendererWx.flipy‰   s   € àr"   c                 ó4  — |rt        j                  |«      }| j                  €| j                  «       }n| j                  }|j                  }| j                  ||«      }|j                  |t        j                  «       |j                  |«      \  }}}	}
|||	fS r&   )
r   Ú
strip_mathrm   Únew_gcÚgfx_ctxÚget_wx_fontÚSetFontr   ÚBLACKÚGetFullTextExtent)r-   ÚsÚpropÚismathrm   rt   ÚfontÚwÚhÚdescentÚleadings              r    Úget_text_width_height_descentz(RendererWx.get_text_width_height_descent�   s†   € ñ Ü× Ñ  Ó#ˆAà�7‰7ˆ?Ø—‘“‰Bà—‘ˆBØ—*‘*ˆØ×Ñ  4Ó(ˆØ�‰˜œbŸh™hÔ'Ø!(×!:Ñ!:¸1Ó!=Ñˆˆ1ˆg�wà�!�Wˆ}Ðr"   c                 ó2   — | j                   | j                  fS r&   )rg   ri   r5   s    r    Úget_canvas_width_heightz"RendererWx.get_canvas_width_heightž   s   € à�z‰z˜4Ÿ;™;Ð&Ð&r"   c                 ó  — |j                  «       }|�|j                  }|j                  }|j                  |k7  rN||_        |€|j	                  «        y |j                  |d   | j                  |d   z
  |d   z
  |d   |d   «       y y )Nr   r   é   é   )Úget_clip_rectangleÚboundsrt   Ú_lastcliprectÚ	ResetClipÚClipri   )r-   rm   Ú
new_boundsrt   s       r    Úhandle_clip_rectanglez RendererWx.handle_clip_rectangle¢   s�   € Ø×*Ñ*Ó,ˆ
ØÐ!Ø#×*Ñ*ˆJØ—*‘*ˆØ× Ñ  JÒ.Ø$.ˆGÔ!ØÐ!Ø×!Ñ!Õ#à—‘˜Z¨™]Ø!Ÿ[™[¨:°a©=Ñ8¸:Àa¹=ÑHØ'¨™]¨J°q©Mõ;ð /r"   c                 ó¸  — | j                  «       }|j                  |«      D ]µ  \  }}|t        j                  k(  r |j                  |Ž  Œ)|t        j
                  k(  r |j                  |Ž  ŒL|t        j                  k(  r |j                  |Ž  Œo|t        j                  k(  r |j                  |Ž  Œ’|t        j                  k(  sŒ¦|j                  «        Œ· |S r&   )Ú
CreatePathÚiter_segmentsr   ÚMOVETOÚMoveToPointÚLINETOÚAddLineToPointÚCURVE3ÚAddQuadCurveToPointÚCURVE4ÚAddCurveToPointÚ	CLOSEPOLYÚCloseSubpath)rt   ÚpathÚ	transformÚwxpathÚpointsÚcodes         r    Úconvert_pathzRendererWx.convert_path°   s½   € à×#Ñ#Ó%ˆØ ×.Ñ.¨yÓ9ò 
	&‰LˆF�DØ”t—{‘{Ò"Ø"�×"Ñ" FÒ+ØœŸ™Ò$Ø%�×%Ñ% vÒ.ØœŸ™Ò$Ø*�×*Ñ*¨FÒ3ØœŸ™Ò$Ø&�×&Ñ&¨Ò/ØœŸ™Ó'Ø×#Ñ#Õ%ð
	&ð ˆr"   c                 óÂ  — |j                  «        | j                  |«       |j                  }|t        «       j	                  dd«      j                  d| j                  «      z   }| j                  |||«      }|�E|j                  t        j                  |j                  |«      «      «       |j                  |«       n|j                  |«       |j                  «        y )Ng      ð?g      ð¿ç        )Úselectr�   rt   r   ÚscaleÚ	translateri   r    ÚSetBrushr   ÚBrushÚget_wxcolourÚDrawPathÚ
StrokePathÚunselect)r-   rm   r›   rœ   ÚrgbFacert   r�   s          r    Ú	draw_pathzRendererWx.draw_pathÀ   s¯   € à
�	‰	ŒØ×"Ñ" 2Ô&Ø—*‘*ˆØÜ‹J×Ñ˜S $Ó'×1Ñ1°#°t·{±{ÓCñDˆ	à×"Ñ" 7¨D°)Ó<ˆØÐØ×ÑœRŸX™X b§o¡o°gÓ&>Ó?Ô@Ø×Ñ˜VÕ$à×Ñ˜vÔ&Ø
�‰�r"   c           	      óè  — |j                  «       }|�|j                  \  }}}}	nd}d}| j                  }| j                  }	|j                  d d \  }
}t
        j                  j                  ||
|j                  «       «      }|j                  «        |j                  j                  |t        |«      t        | j                  |z
  «      t        |«      t        |	 «      «       |j                  «        y )Nr   r†   )r‡   rˆ   rg   ri   Úshaper   ÚBitmapÚFromBufferRGBAÚtobytesr£   rt   Ú
DrawBitmapÚintr«   )r-   rm   ÚxÚyÚimÚbboxÚlÚbr}   r~   ÚrowsÚcolsrj   s                r    Ú
draw_imagezRendererWx.draw_imageÏ   s¾   € Ø×$Ñ$Ó&ˆØÐØŸ™‰JˆAˆq�!‘QàˆAØˆAØ—
‘
ˆAØ—‘ˆAØ—X‘X˜b˜q�\‰
ˆˆdÜ—‘×)Ñ)¨$°°b·j±j³lÓCˆØ
�	‰	ŒØ
�
‰
×Ñ˜f¤c¨!£f¬c°$·+±+À±/Ó.BÜ! !›f¤c¨1¨"£gô	/à
�‰�r"   c	                 óÀ  — |rt        j                  |«      }t        j                  dt	        | «      «       |j                  «        | j                  |«       |j                  }	| j                  ||«      }
|j                  |j                  «       «      }|	j                  |
|«       | j                  |||«      \  }}}t        |«      }t        ||z
  «      }|dk(  r|	j                  |||«       n_t        j                   |«      }|t        j"                  |«      z  }|t        j$                  |«      z  }|	j'                  |||z
  ||z
  |«       |j)                  «        y )Nz%s - draw_text()r¢   )r   rr   rc   rd   re   r£   r�   rt   ru   r¨   Úget_rgbrv   r�   r´   ÚDrawTextÚmathÚradiansÚsinÚcosÚDrawRotatedTextr«   )r-   rm   rµ   r¶   ry   rz   Úangler{   Úmtextrt   r|   Úcolorr}   r~   ÚdÚradsÚxoÚyos                     r    Ú	draw_textzRendererWx.draw_textß   s  € ñ Ü× Ñ  Ó#ˆAÜ�
‰
Ð%¤t¨D£zÔ2Ø
�	‰	ŒØ×"Ñ" 2Ô&Ø—*‘*ˆà×Ñ  4Ó(ˆØ—‘ §
¡
£Ó-ˆØ�‰˜˜eÔ$à×4Ñ4°Q¸¸fÓE‰ˆˆ1ˆaÜ�‹FˆÜ��A‘‹Jˆà�CŠ<Ø×Ñ˜Q  1Õ%ä—<‘< Ó&ˆDØ”T—X‘X˜d“^Ñ#ˆBØ”T—X‘X˜d“^Ñ#ˆBØ×#Ñ# A q¨2¡v¨q°2©v°tÔ<à
�‰�r"   c                 óö   — t         j                  dt        | «      «       t        | j                  | «      | _        | j
                  j                  «        | j
                  j                  «        | j
                  S )Nz%s - new_gc())rc   rd   re   ÚGraphicsContextWxrj   rm   r£   r«   r5   s    r    rs   zRendererWx.new_gcû   sM   € ä�
‰
�?¤D¨£JÔ/Ü# D§K¡K°Ó6ˆŒØ�‰�‰ÔØ�‰×ÑÔØ�w‰wˆr"   c                 ó  — t         j                  dt        | «      «       t        |«      }| j                  j                  |«      }|�|S | j                  |j                  «       «      }t        j                  t        |«      | j                  j                  |j                  «       t        j                  «      | j                  |j                  «          | j                   |j#                  «          ¬«      x| j                  |<   }|S )z7Return a wx font.  Cache font instances for efficiency.z%s - get_wx_font())Ú	pointSizeÚfamilyÚstyleÚweight)rc   rd   re   Úhashrk   ÚgetÚpoints_to_pixelsÚget_size_in_pointsr   ÚFontÚroundÚ	fontnamesÚget_nameÚROMANÚ
fontanglesÚ	get_styleÚfontweightsÚ
get_weight)r-   ry   rz   Úkeyr|   Úsizes         r    ru   zRendererWx.get_wx_font  sÇ   € ä�
‰
Ð'¬¨d«Ô4Ü�4‹jˆØ�z‰z�~‰~˜cÓ"ˆØÐØˆKØ×$Ñ$ T×%<Ñ%<Ó%>Ó?ˆô "$§¡Ü˜D“kØ—>‘>×%Ñ% d§m¡m£o´r·x±xÓ@Ø—/‘/ $§.¡.Ó"2Ñ3Ø×#Ñ# D§O¡OÓ$5Ñ6ô	"8ð 	8ˆ�
‰
�3‰˜$ð
 ˆr"   c                 ó:   — |t         dz  | j                  z  dz  z  S )Ng      R@)ÚPIXELS_PER_INCHrl   )r-   rž   s     r    r×   zRendererWx.points_to_pixels  s    € àœ¨4Ñ/°$·(±(Ñ:¸TÑAÑBÐBr"   r&   )FN)!r=   r>   r?   r@   r   ÚFONTWEIGHT_LIGHTÚFONTWEIGHT_NORMALÚFONTWEIGHT_BOLDrà   ÚFONTSTYLE_ITALICÚFONTSTYLE_NORMALÚFONTSTYLE_SLANTrÞ   ÚFONTFAMILY_SWISSÚFONTFAMILY_ROMANÚFONTFAMILY_SCRIPTÚFONTFAMILY_DECORATIVEÚFONTFAMILY_MODERNrÛ   r,   rp   r�   rƒ   r�   Ústaticmethodr    r­   r½   rÍ   rs   ru   r×   rA   rB   s   @r    rK   rK   F   s  ø„ ñ
ðØˆR× Ñ ðàˆR× Ñ ðð 	ˆR× Ñ ðð 	ˆR×!Ñ!ð	ð
 	ˆR×!Ñ!ðð 	ˆR×!Ñ!ðð 	ˆR×Ñðð 	ˆR×Ñðð 	ˆR×Ñðð 	�b×)Ñ)ðð 	�×$Ñ$ðð 	�"×&Ñ&ðð 	�"×&Ñ&ðð 	�B×(Ñ(ðð 	�×"Ñ"ðð  	�×#Ñ#ð!ð" 	�R×'Ñ'ð#ð$ 	�×#Ñ#ñ%€Kð* ×%Ñ%Ø×%Ñ%Ø×%Ñ%ñ€Jð ×#Ñ#Ø×$Ñ$Ø×&Ñ&Ø×.Ñ.Ø×&Ñ&Ø×'Ñ'Ø×'Ñ'ñ€Iô	òòò"'ò;ð ñó ðóòó ò8òö"Cr"   rK   c                   ó  ‡ — e Zd ZdZej
                  ej                  ej                  dœZej                  ej                  ej                  dœZ ej                  «       Zˆ fd„Zd„ Zd„ Zdˆ fd„	Zˆ fd„Zˆ fd	„Zˆ fd
„Zd„ Zˆ xZS )rÏ   a<  
    The graphics context provides the color, line styles, etc.

    This class stores a reference to a wxMemoryDC, and a
    wxGraphicsContext that draws to it.  Creating a wxGraphicsContext
    seems to be fairly heavy, so these objects are cached based on the
    bitmap object that is passed in.

    The base GraphicsContext stores colors as an RGB tuple on the unit
    interval, e.g., (0.5, 0.0, 1.0).  wxPython uses an int interval, but
    since wxPython colour management is rather simple, I have not chosen
    to implement a separate colour manager class.
    )ÚbuttÚ
projectingrÚ   )ÚbevelÚmiterrÚ   c                 óþ  •— t         ‰| �  «        t        j                  dt	        | «      |«       | j
                  j                  |d«      \  }}|€Lt        j                  |«      }t        j                  j                  |«      }d |_        ||f| j
                  |<   || _        || _        || _        t        j                  ddt        j                   «      | _        |j%                  | j"                  «       || _        y )Nz%s - __init__(): %s)NNrw   r   )r+   r,   rc   rd   re   Ú_cacherÖ   r   ÚMemoryDCÚGraphicsContextÚCreater‰   rj   Údcrt   ÚPenÚSOLIDÚ_penÚSetPenÚrenderer)r-   rj   r  rü   rt   r0   s        €r    r,   zGraphicsContextWx.__init__1  sÂ   ø€ Ü‰ÑÔä�
‰
Ð(¬$¨t«*°fÔ=à—k‘k—o‘o f¨lÓ;‰ˆˆGØˆ:Ü—‘˜VÓ$ˆBÜ×(Ñ(×/Ñ/°Ó3ˆGØ$(ˆGÔ!Ø"$ g +ˆD�K‰K˜ÑàˆŒØˆŒØˆŒÜ—F‘F˜7 A¤r§x¡xÓ0ˆŒ	Ø�‰�t—y‘yÔ!Ø ˆ�r"   c                 ó„   — t         j                  dk(  r-| j                  j                  | j                  «       d| _        yy)z2Select the current bitmap into this wxDC instance.Úwin32TN)ÚsysÚplatformrü   ÚSelectObjectrj   Ú
IsSelectedr5   s    r    r£   zGraphicsContextWx.selectD  s0   € ä�<‰<˜7Ò"Ø�G‰G× Ñ  §¡Ô-Ø"ˆD�Oð #r"   c                 óŒ   — t         j                  dk(  r1| j                  j                  t        j
                  «       d| _        yy)z-Select a Null bitmap into this wxDC instance.r  FN)r  r  rü   r  r   Ú
NullBitmapr  r5   s    r    r«   zGraphicsContextWx.unselectJ  s0   € ä�<‰<˜7Ò"Ø�G‰G× Ñ ¤§¡Ô/Ø#ˆD�Oð #r"   c                 ó^  •— t         j                  dt        | «      «       | j                  «        t        ‰| �  ||«       | j                  j                  | j                  | j                  «       «      «       | j                  j                  | j                  «       | j                  «        y )Nz%s - set_foreground())rc   rd   re   r£   r+   Úset_foregroundrÿ   Ú	SetColourr¨   r¿   rt   r   r«   )r-   ÚfgÚisRGBAr0   s      €r    r  z GraphicsContextWx.set_foregroundP  sr   ø€ ô 	�
‰
Ð*¬D°«JÔ7Ø�‰ŒÜ‰Ñ˜r 6Ô*à�	‰	×Ñ˜D×-Ñ-¨d¯l©l«nÓ=Ô>Ø�‰×Ñ˜DŸI™IÔ&Ø�‰�r"   c                 óÂ  •— t        |«      }t        j                  dt        | «      «       | j	                  «        d|cxk  rdk  rn nd}t
        ‰| �  |«       t        | j                  j                  | j                  «      «      }|dk(  rd}| j                  j                  |«       | j                  j                  | j                  «       | j                  «        y )Nz%s - set_linewidth()r   r   )Úfloatrc   rd   re   r£   r+   Úset_linewidthr´   r  r×   Ú
_linewidthrÿ   ÚSetWidthrt   r   r«   )r-   r}   Úlwr0   s      €r    r  zGraphicsContextWx.set_linewidth_  sŸ   ø€ ä�!‹HˆÜ�
‰
Ð)¬4°«:Ô6Ø�‰ŒØˆqŒ9�1�9ØˆAÜ‰Ñ˜aÔ Ü�—‘×/Ñ/°·±Ó@ÓAˆØ�Š7ØˆBØ�	‰	×Ñ˜2ÔØ�‰×Ñ˜DŸI™IÔ&Ø�‰�r"   c                 óX  •— t         j                  dt        | «      «       | j                  «        t        ‰| �  |«       | j                  j                  t        j                  | j                     «       | j                  j                  | j                  «       | j                  «        y )Nz%s - set_capstyle())rc   rd   re   r£   r+   Úset_capstylerÿ   ÚSetCaprÏ   Ú_capdÚ	_capstylert   r   r«   )r-   Úcsr0   s     €r    r  zGraphicsContextWx.set_capstylen  sm   ø€ ä�
‰
Ð(¬$¨t«*Ô5Ø�‰ŒÜ‰Ñ˜RÔ Ø�	‰	×ÑÔ*×0Ñ0°·±Ñ@ÔAØ�‰×Ñ˜DŸI™IÔ&Ø�‰�r"   c                 óX  •— t         j                  dt        | «      «       | j                  «        t        ‰| �  |«       | j                  j                  t        j                  | j                     «       | j                  j                  | j                  «       | j                  «        y )Nz%s - set_joinstyle())rc   rd   re   r£   r+   Úset_joinstylerÿ   ÚSetJoinrÏ   Ú_joindÚ
_joinstylert   r   r«   )r-   Újsr0   s     €r    r  zGraphicsContextWx.set_joinstylew  sm   ø€ ä�
‰
Ð)¬4°«:Ô6Ø�‰ŒÜ‰Ñ˜bÔ!Ø�	‰	×ÑÔ+×2Ñ2°4·?±?ÑCÔDØ�‰×Ñ˜DŸI™IÔ&Ø�‰�r"   c           	      ó¢   — t         j                  dt        | «      «       t        j                  |D �cg c]  }t        d|z  «      ‘Œ c}Ž S c c}w )z'Convert an RGB(A) color to a wx.Colour.z%s - get_wx_color()éÿ   )rc   rd   re   r   ÚColourr´   )r-   rÈ   rµ   s      r    r¨   zGraphicsContextWx.get_wxcolour€  s:   € ä�
‰
Ð(¬$¨t«*Ô5Ü�y‰y°Ö7¨Aœ3˜s Q™w�<Ò7Ð8Ð8ùÒ7s   ³Ar&   )r=   r>   r?   r@   r   ÚCAP_BUTTÚCAP_PROJECTINGÚ	CAP_ROUNDr  Ú
JOIN_BEVELÚ
JOIN_MITERÚ
JOIN_ROUNDr  ÚweakrefÚWeakKeyDictionaryrø   r,   r£   r«   r  r  r  r  r¨   rA   rB   s   @r    rÏ   rÏ     s€   ø„ ñð —[‘[Ø×,Ñ,Ø—l‘lñ$€Eð —}‘}Ø—}‘}Ø—}‘}ñ&€Fð 'ˆW×&Ñ&Ó(€Fô!ò&#ò$õôôôö9r"   rÏ   c                   óè  — e Zd ZdZdZeZ ej                  d„ «      Z	i e
j                  d“e
j                  d“e
j                  d“e
j                  d“e
j                  d“e
j                   d	“e
j"                  d
“e
j$                  d“e
j&                  d“e
j(                  d“e
j*                  d“e
j,                  d“e
j.                  d“e
j0                  d“e
j2                  d“e
j4                  d“e
j6                  d“i e
j8                  d“e
j:                  d“e
j<                  d“e
j>                  d“e
j@                  d“e
jB                  d“e
jD                  d“e
jF                  d“e
jH                  d“e
jJ                  d“e
jL                  d“e
jN                  d “e
jP                  d!“e
jR                  d"“e
jT                  d#“e
jV                  d$“e
jX                  d%“¥i e
jZ                  d&“e
j\                  d'“e
j^                  d(“e
j`                  d)“e
jb                  d*“e
jd                  d+“e
jf                  d,“e
jh                  d-“e
jj                  d.“e
jl                  d/“e
jn                  d0“e
jp                  d1“e
jr                  d“e
jt                  d	“e
jv                  d
“e
jx                  d“e
jz                  d“¥e
j|                  d!e
j~                  d"e
j€                  de
j‚                  d e
j„                  de
j†                  di¥ZDdRd3„ZEdRd4„ZFd5„ ZGd6„ ZHdSd7„ZIdRd8„ZJd9„ ZKdRd:„ZLi eMjœ                  ¥d;d<d<d=d>d?d?d@dAœ¥ZNdB„ ZOdC„ ZPeQdRd2dDœdE„«       ZRdF„ ZSdRdG„ZTdH„ ZUdI„ ZVdJ„ ZWdTdK„ZXdL„ ZYdM„ ZZdN„ Z[dO„ Z\dP„ Z]dQ„ Z^y2)UÚ_FigureCanvasWxBaseaa  
    The FigureCanvas contains the figure and does event handling.

    In the wxPython backend, it is derived from wxPanel, and (usually) lives
    inside a frame instantiated by a FigureManagerWx. The parent window
    probably implements a wx.Sizer to control the displayed control size - but
    we give a hint as to our preferred minimum size.
    r   c                 ó   — t         S r&   )ÚFigureManagerWx)Úclss    r    ú<lambda>z_FigureCanvasWxBase.<lambda>’  s   € ´?€ r"   ÚcontrolÚshiftÚaltÚ	caps_lockÚleftÚupÚrightÚdownÚescapeÚf1Úf2Úf3Úf4Úf5Úf6Úf7Úf8Úf9Úf10Úf11Úf12Úscroll_lockÚbreakÚ	backspaceÚenterÚinsertÚdeleteÚhomeÚendÚpageupÚpagedownÚ0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9ú+ú-Ú*ú/ÚdecNc           	      ó   — t        j                  | |«       t        t        j                  | j
                  j                  j                  «      \  }}t        j                  j                  | ||t        j                  ||«      ¬«       t        j                  ||«      | _        t        j                  dt        | «      ||«       d| _        d| _        t        j$                  ddt        j&                  «      | _        t        j$                  ddt        j*                  «      | _        | j/                  t        j0                  | j2                  «       | j/                  t        j4                  | j6                  «       | j/                  t        j8                  | j:                  «       | j/                  t        j<                  | j>                  «       | j/                  t        j@                  | jB                  «       | j/                  t        jD                  | jB                  «       | j/                  t        jF                  | jB                  «       | j/                  t        jH                  | jB                  «       | j/                  t        jJ                  | jB                  «       | j/                  t        jL                  | jB                  «       | j/                  t        jN                  | jB                  «       | j/                  t        jP                  | jB                  «       | j/                  t        jR                  | jB                  «       | j/                  t        jT                  | jB                  «       | j/                  t        jV                  | jB                  «       | j/                  t        jX                  | jB                  «       | j/                  t        jZ                  | jB                  «       | j/                  t        j\                  | jB                  «       | j/                  t        j^                  | jB                  «       | j/                  t        j`                  | jb                  «       | j/                  t        jd                  | jf                  «       | j/                  t        jh                  | jj                  «       | j/                  t        jl                  | jn                  «       | j/                  t        jp                  | jr                  «       | j/                  t        jt                  | jr                  «       | jw                  t        jx                  «       | j{                  t        j|                  «       y)zÏ
        Initialize a FigureWx instance.

        - Initialize the FigureCanvasBase and wxPanel parents.
        - Set event handlers for resize, paint, and keyboard and mouse
          interaction.
        ©rã   z"%s - __init__() - bitmap w:%d h:%dFNrw   r   ÚWHITE)?r   r,   ÚmaprÁ   ÚceilÚfigurer¸   rã   r   ÚPanelÚSizer°   rj   rc   rd   re   Ú_isDrawnÚ_rubberband_rectrý   ÚPENSTYLE_SHORT_DASHÚ_rubberband_pen_blackÚPENSTYLE_SOLIDÚ_rubberband_pen_whiteÚBindÚEVT_SIZEÚ_on_sizeÚ	EVT_PAINTÚ	_on_paintÚEVT_CHAR_HOOKÚ_on_key_downÚ
EVT_KEY_UPÚ
_on_key_upÚEVT_LEFT_DOWNÚ_on_mouse_buttonÚEVT_LEFT_DCLICKÚEVT_LEFT_UPÚEVT_MIDDLE_DOWNÚEVT_MIDDLE_DCLICKÚEVT_MIDDLE_UPÚEVT_RIGHT_DOWNÚEVT_RIGHT_DCLICKÚEVT_RIGHT_UPÚEVT_MOUSE_AUX1_DOWNÚEVT_MOUSE_AUX1_UPÚEVT_MOUSE_AUX2_DOWNÚEVT_MOUSE_AUX2_UPÚEVT_MOUSE_AUX1_DCLICKÚEVT_MOUSE_AUX2_DCLICKÚEVT_MOUSEWHEELÚ_on_mouse_wheelÚ
EVT_MOTIONÚ
_on_motionÚEVT_ENTER_WINDOWÚ	_on_enterÚEVT_LEAVE_WINDOWÚ	_on_leaveÚEVT_MOUSE_CAPTURE_CHANGEDÚ_on_capture_lostÚEVT_MOUSE_CAPTURE_LOSTÚSetBackgroundStyleÚBG_STYLE_PAINTÚSetBackgroundColourrb  )r-   ÚparentÚidre  r}   r~   s         r    r,   z_FigureCanvasWxBase.__init__Ð  sb  € ô 	×!Ñ! $¨Ô/Ü”4—9‘9˜dŸk™k×.Ñ.×3Ñ3Ó4‰ˆˆ1ä
�‰×Ñ˜$ ¨´·±¸¸A³ÐÔ?ä—i‘i  1“oˆŒÜ�
‰
Ð7¼¸d»ÀQÈÔJØˆŒØ $ˆÔÜ%'§V¡V¨G°Q¼×8NÑ8NÓ%OˆÔ"Ü%'§V¡V¨G°Q¼×8IÑ8IÓ%JˆÔ"à�	‰	”"—+‘+˜tŸ}™}Ô-Ø�	‰	”"—,‘, §¡Ô/Ø�	‰	”"×"Ñ" D×$5Ñ$5Ô6Ø�	‰	”"—-‘- §¡Ô1Ø�	‰	”"×"Ñ" D×$9Ñ$9Ô:Ø�	‰	”"×$Ñ$ d×&;Ñ&;Ô<Ø�	‰	”"—.‘. $×"7Ñ"7Ô8Ø�	‰	”"×$Ñ$ d×&;Ñ&;Ô<Ø�	‰	”"×&Ñ&¨×(=Ñ(=Ô>Ø�	‰	”"×"Ñ" D×$9Ñ$9Ô:Ø�	‰	”"×#Ñ# T×%:Ñ%:Ô;Ø�	‰	”"×%Ñ% t×'<Ñ'<Ô=Ø�	‰	”"—/‘/ 4×#8Ñ#8Ô9Ø�	‰	”"×(Ñ(¨$×*?Ñ*?Ô@Ø�	‰	”"×&Ñ&¨×(=Ñ(=Ô>Ø�	‰	”"×(Ñ(¨$×*?Ñ*?Ô@Ø�	‰	”"×&Ñ&¨×(=Ñ(=Ô>Ø�	‰	”"×*Ñ*¨D×,AÑ,AÔBØ�	‰	”"×*Ñ*¨D×,AÑ,AÔBØ�	‰	”"×#Ñ# T×%9Ñ%9Ô:Ø�	‰	”"—-‘- §¡Ô1Ø�	‰	”"×%Ñ% t§~¡~Ô6Ø�	‰	”"×%Ñ% t§~¡~Ô6à�	‰	”"×.Ñ.°×0EÑ0EÔFØ�	‰	”"×+Ñ+¨T×-BÑ-BÔCà×Ñ¤× 1Ñ 1Ô2Ø× Ñ ¤§¡Õ*r"   c                 ó˜  — t        j                  «       }|j                  | j                  «       t         j                  j                  «       s}t         j                  j                  «       }|r\t         j                  j                  |«       t         j                  j                  «        t         j                  j                  «        yyy)z*Copy bitmap of canvas to system clipboard.N)
r   ÚBitmapDataObjectÚ	SetBitmaprj   ÚTheClipboardÚIsOpenedÚOpenÚSetDataÚFlushÚClose)r-   ÚeventÚbmp_objÚopen_successs       r    ÚCopy_to_Clipboardz%_FigureCanvasWxBase.Copy_to_Clipboard  sƒ   € ä×%Ñ%Ó'ˆØ×Ñ˜$Ÿ+™+Ô&ä�‰×'Ñ'Ô)ÜŸ?™?×/Ñ/Ó1ˆLÙÜ—‘×'Ñ'¨Ô0Ü—‘×%Ñ%Ô'Ü—‘×%Ñ%Õ'ð ð *r"   c                 ót   — t         j                  dt        | «      «       d| _        | j	                  d¬«       y )Nz%s - draw_idle()F©ÚeraseBackground)rc   rd   re   rh  ÚRefreshr5   s    r    Ú	draw_idlez_FigureCanvasWxBase.draw_idle  s,   € ä�
‰
Ð%¤t¨D£zÔ2ØˆŒð 	�‰ UˆÕ+r"   c                 ó,   — t        j                  «        y r&   )r   ÚYieldr5   s    r    Úflush_eventsz _FigureCanvasWxBase.flush_events  s   € ä
�‰�
r"   c                 ó¾  — t        | d«      rt        d«      ‚t        j                  | t        j                  ¬«      }|dkD  rY|j                  t        |dz  «      d¬«       | j                  t        j                  | j                  |j                  «       ¬«       t        j                  «       | _        | j                  j                  «        |j                  «        y )NÚ_event_loopzEvent loop already running©r–  r   iè  T)ÚoneShot)ÚhasattrÚRuntimeErrorr   r'   ÚID_ANYr2   r´   rn  Ú	EVT_TIMERÚstop_event_loopÚGetIdÚGUIEventLoopr­  ÚRunr8   )r-   ÚtimeoutÚtimers      r    Ústart_event_loopz$_FigureCanvasWxBase.start_event_loop  s˜   € ä�4˜Ô'ÜÐ;Ó<Ð<Ü—‘˜¤"§)¡)Ô,ˆØ�QŠ;Ø�K‰Kœ˜G d™NÓ+°TˆKÔ:Ø�I‰I”b—l‘l D×$8Ñ$8¸U¿[¹[»]ˆIÔKäŸ?™?Ó,ˆÔØ×Ñ×ÑÔØ�
‰
�r"   c                 óŠ   — t        | d«      r7| j                  j                  «       r| j                  j                  «        | `y y )Nr­  )r°  r­  r;   ÚExit©r-   r   s     r    r´  z#_FigureCanvasWxBase.stop_event_loop)  s;   € ä�4˜Ô'Ø×Ñ×)Ñ)Ô+Ø× Ñ ×%Ñ%Ô'ØÑ ð (r"   c                 ó�  — | j                  «       }| j                  «       }t        |j                  «       «      }g }g }d}t	        |«      D ]_  \  }\  }}	dj                  |	D �
cg c]  }
d|
z  ‘Œ	 c}
«      }|j                  |	d   «       |› d|› d|› �}||	v r|}|j                  |«       Œa dj                  |«      }|||fS c c}
w )z3Return the wildcard string for the filesave dialog.r   ú;z*.%sz (z)|ú|)Úget_default_filetypeÚget_supported_filetypes_groupedÚsortedÚitemsÚ	enumerateÚjoinÚappend)r-   Údefault_filetypeÚ	filetypesÚsorted_filetypesÚ	wildcardsÚ
extensionsÚfilter_indexÚirE   ÚextsÚextÚext_listÚwildcards                r    Ú_get_imagesave_wildcardsz,_FigureCanvasWxBase._get_imagesave_wildcards0  sß   € à×4Ñ4Ó6ÐØ×8Ñ8Ó:ˆ	Ü! )§/¡/Ó"3Ó4ÐØˆ	Øˆ
ØˆÜ(Ð)9Ó:ò 	'‰OˆA‰|��dØ—x‘x¸Ö >°# ¨#£Ò >Ó?ˆHØ×Ñ˜d 1™gÔ&Ø˜˜r ( ¨2¨h¨ZÐ8ˆHØ 4Ñ'Ø �Ø×Ñ˜XÕ&ð	'ð —H‘H˜YÓ'ˆ	Ø˜* lÐ2Ð2ùò !?s   Á#C
c                 ó¢  — t         j                  dt        | «      «       | r| j                  «       sy|st	        j
                  | «      }t        j                  dk(  rZt        | j                  j                  j                  «       t        «      r(| j                  j                  «       j                  «       n| j                  }|j                  |dd«       | j                   �nt#        t$        | j                   «      \  }}}}||||f||||f||||f||||fg}|j'                  || j(                  «       |j'                  || j*                  «       yy)zu
        Update the displayed image on the GUI canvas, using the supplied
        wx.PaintDC device context.
        z%s - gui_repaint()NÚ	__WXMSW__r   )rc   rd   re   ÚIsShownOnScreenr   ÚClientDCÚPlatformÚ
isinstancere  ÚcanvasÚget_rendererrK   rj   ÚConvertToImageÚConvertToBitmapr³   ri  rc  rÚ   ÚDrawLineListrm  rk  )r-   ÚdrawDCÚbmpÚx0Úy0Úx1Úy1Úrects           r    Úgui_repaintz_FigureCanvasWxBase.gui_repaintB  s/  € ô
 	�
‰
Ð'¬¨d«Ô4ñ ˜×-Ñ-Ô/ØÙÜ—[‘[ Ó&ˆFô —+‘+ Ò,Ü  §¡×!3Ñ!3×!@Ñ!@Ó!BÄJÔOð �{‰{×)Ñ)Ó+×;Ñ;Ô=ð —K‘Kð 	ð 	×Ñ˜#˜q !Ô$Ø× Ñ Ð,ä ¤¨×(=Ñ(=Ó>‰NˆB��B˜Ø˜˜R Ð$ r¨2¨r°2Ð&6Ø˜˜R Ð$ r¨2¨r°2Ð&6ð8ˆDà×Ñ  d×&@Ñ&@ÔAØ×Ñ  d×&@Ñ&@ÕAð -r"   zWindows bitmapÚJPEGÚPCXzPortable Network GraphicszTagged Image Format FilezX pixmap)rà  ÚjpegÚjpgÚpcxÚpngÚtifÚtiffÚxpmc                 óî   — t         j                  dt        | «      «       t        j                  | «      }| j
                  s| j                  |¬«       n| j                  |¬«       |j                  «        y)z$Called when wxPaintEvt is generated.z%s - _on_paint()©rß  N)	rc   rd   re   r   ÚPaintDCrh  Údrawræ  ÚDestroy)r-   r   rß  s      r    rr  z_FigureCanvasWxBase._on_painti  sS   € ä�
‰
Ð%¤t¨D£zÔ2Ü—‘˜DÓ!ˆØ�}Š}Ø�I‰I˜VˆIÕ$à×Ñ FÐÔ+Ø�‰Õr"   c                 ó´  — t         j                  dt        | «      «       | j                  «       j	                  «       }|r|j                  | «      }|r<r:|j                  s.|j                  t        j                  z  s| j                  «       }n/| j                  «       }|j                  | j                  «       «       t        | dd«      r|| j                  | j                  fk(  ry|\  | _        | _        d| _        | j                  dk  s| j                  dk  ryt        j"                  | j                  | j                  «      | _        | j&                  j(                  }| j                  |z  }| j                  |z  }| j&                  j+                  ||d¬«       | j-                  d¬«       t/        d| «      j1                  «        | j3                  «        y)	zÍ
        Called when wxEventSize is generated.

        In this application we attempt to resize to fit the window, so it
        is better to take the performance hit and redraw the whole window.
        z%s - _on_size()Ú_widthNFr   )Úforwardr¥  Úresize_event)rc   rd   re   Ú	GetParentÚGetSizerÚGetItemÚ
ProportionÚFlagr   ÚEXPANDÚ
GetMinSizeÚGetClientSizeÚIncToÚgetattrrö  Ú_heightrh  r°   rj   re  rl   Úset_size_inchesr§  r   Ú_processr¨  )r-   r   ÚszÚsirã   ÚdpivalÚwinchÚhinchs           r    rp  z_FigureCanvasWxBase._on_sizes  sd  € ô 	�
‰
Ð$¤d¨4£jÔ1Ø�^‰^Ó×&Ñ&Ó(ˆÙØ—‘˜DÓ!ˆBÙ‘"˜RŸ]š]°2·7±7¼R¿Y¹YÒ3Fà—?‘?Ó$‰Dð ×%Ñ%Ó'ˆDà�J‰J�t—‘Ó(Ô)Ü�4˜ 4Ô(Ø˜Ÿ™ T§\¡\Ð2Ò2àØ$(Ñ!ˆŒ�T”\ØˆŒà�;‰;˜!Ò˜tŸ|™|¨qÒ0Øô —i‘i §¡¨T¯\©\Ó:ˆŒà—‘—‘ˆØ—‘˜fÑ$ˆØ—‘˜vÑ%ˆØ�‰×#Ñ# E¨5¸%Ð#Ô@ð
 	�‰ UˆÔ+Ü�N DÓ)×2Ñ2Ô4Ø�‰Õr"   ©Úexcludec                ó¤  — dt         j                  t         j                  fdt         j                  t         j                  fdt         j
                  t         j                  fg}| �2| j                  «       }|D ���cg c]  \  }}}||z  r||k7  r|‘Œ c}}}S |D ���cg c]  \  }}}t        j                  |«      r|‘Œ c}}}S c c}}}w c c}}}w )NÚctrlr4  r3  )	r   ÚMOD_CONTROLÚWXK_CONTROLÚMOD_ALTÚWXK_ALTÚ	MOD_SHIFTÚ	WXK_SHIFTÚGetModifiersÚGetKeyState)r   r  Ú	mod_tableÚ	modifiersrE   Úmodrâ   s          r    Ú_mpl_modifiersz"_FigureCanvasWxBase._mpl_modifiers   sÆ   € ð ”R—^‘^¤R§^¡^Ð4Ø”B—J‘J¤§
¡
Ð+Ø”b—l‘l¤B§L¡LÐ1ð
ˆ	ð
 ÐØ×*Ñ*Ó,ˆIØ/8÷ ;ð ;™^˜T 3¨Ø  3’¨7°cª>ò ô ;ð ;ð 09÷ ,ð ,™^˜T 3¨Ü—~‘~ cÔ*ò ô ,ð ,ùô;ùô,s   Á;CÂ"Cc                 óT  — |j                   }|| j                  v r| j                  |   }n2|dk  r,t        |«      }|j                  «       s|j	                  «       }ny | j                  ||¬«      }d|v r!|j                  «       r|j                  d«       dj                  g |¢|‘«      S )Né   r  r3  r[  )	ÚKeyCodeÚkeyvaldÚchrÚ	ShiftDownÚlowerr  ÚisupperÚremoverÆ  )r-   r   Úkeyvalrâ   Úmodss        r    Ú_get_keyz_FigureCanvasWxBase._get_key¯  s–   € Ø—‘ˆØ�T—\‘\Ñ!Ø—,‘,˜vÑ&‰CØ�cŠ\Ü�f“+ˆCð —?‘?Ô$Ø—i‘i“k‘àØ×"Ñ" 5°&Ð"Ó9ˆØ�d‰?˜sŸ{™{œ}Ø�K‰K˜Ô Ø�x‰x˜˜$˜ ˜Ó%Ð%r"   c                 óü   — |€>t        j                  «       }| j                  |j                  |j                  «      \  }}n|j                  |j                  }}|| j
                  j                  j                  |z
  fS )zv
        Convert a wx position, defaulting to the current cursor position, to
        Matplotlib coordinates.
        )r   ÚGetMouseStateÚScreenToClientÚXÚYre  r¸   ri   )r-   Úposrµ   r¶   s       r    Ú_mpl_coordsz_FigureCanvasWxBase._mpl_coordsÀ  sf   € ð
 ˆ;Ü×"Ñ"Ó$ˆCØ×&Ñ& s§u¡u¨c¯e©eÓ4‰DˆA‰qà—5‘5˜#Ÿ%™%ˆqˆAà�$—+‘+×"Ñ"×)Ñ)¨AÑ-Ð-Ð-r"   c                 ó¢   — t        d| | j                  |«      g| j                  «       ¢­d|iŽj                  «        | r|j	                  «        yy)zCapture key press.Úkey_press_eventÚguiEventN©r   r&  r-  r  ÚSkipr½  s     r    rt  z _FigureCanvasWxBase._on_key_downÍ  sL   € äÐ" DØ—‘˜uÓ%ð	!Ø(,×(8Ñ(8Ó(:ò	!àñ	!ç!)¡¤ÙØ�J‰J�Lð r"   c                 ó¢   — t        d| | j                  |«      g| j                  «       ¢­d|iŽj                  «        | r|j	                  «        yy)zRelease key.Úkey_release_eventr0  Nr1  r½  s     r    rv  z_FigureCanvasWxBase._on_key_upÕ  sL   € äÐ$ dØ—‘˜uÓ%ð	!Ø(,×(8Ñ(8Ó(:ò	!àñ	!ç!)¡¤ÙØ�J‰J�Lð r"   c                 ó>  — t        j                  t        j                  t        j
                  t         j                  t        j                  t         j                  t        j                  t         j                  t        j                  t         j                  t        j                  t         j                  t        j                  t         j                  t        j                   t         j"                  i|¬«      «      }| j%                  |«       | j'                  «        y )N)Úcursor)r   ÚCursorr   Úcheck_getitemr   ÚMOVEÚCURSOR_HANDÚHANDÚPOINTERÚCURSOR_ARROWÚSELECT_REGIONÚCURSOR_CROSSÚWAITÚCURSOR_WAITÚRESIZE_HORIZONTALÚCURSOR_SIZEWEÚRESIZE_VERTICALÚCURSOR_SIZENSÚ	SetCursorr§  )r-   r6  s     r    Ú
set_cursorz_FigureCanvasWxBase.set_cursorÝ  s£   € ä—‘œ4×-Ñ-Ü�L‰Lœ"Ÿ.™.Ü�L‰Lœ"Ÿ.™.Ü�O‰OœRŸ_™_Ü×!Ñ!¤2§?¡?Ü�L‰Lœ"Ÿ.™.Ü×%Ñ%¤r×'7Ñ'7Ü×#Ñ#¤R×%5Ñ%5ð/
ð ôó ˆð 	�‰�vÔØ�‰�r"   c                 ój   — | j                  «       r| j                  «        |r| j                  «        yy)zControl wx mouse capture.N)Ú
HasCaptureÚReleaseMouseÚCaptureMouse)r-   Úcaptures     r    Ú_set_capturez _FigureCanvasWxBase._set_captureë  s,   € à�?‰?ÔØ×ÑÔÙØ×ÑÕð r"   c                 ó&   — | j                  d«       y)zCapture changed or lostFN)rM  r½  s     r    r�  z$_FigureCanvasWxBase._on_capture_lostò  s   € à×Ñ˜%Õ r"   c           
      ól  — |j                  «        | j                  |j                  «       xs |j                  «       «       | j	                  |«      \  }}t
        j                  t        j                  t
        j                  t        j                  t
        j                  t        j                  t
        j                  t        j                  t
        j                  t        j                   i}|j#                  «       }|j%                  ||«      }| j'                  |«      }|j                  «       r!t)        d| |||||¬«      j+                  «        y|j                  «       r"t)        d| |||d||¬«      j+                  «        y|j-                  «       r!t)        d| |||||¬«      j+                  «        yy)úStart measuring on an axis.Úbutton_press_event©r  r0  T)Údblclickr  r0  Úbutton_release_eventN)r2  rM  Ú
ButtonDownÚButtonDClickr-  r   ÚMOUSE_BTN_LEFTr   ÚLEFTÚMOUSE_BTN_MIDDLEÚMIDDLEÚMOUSE_BTN_RIGHTÚRIGHTÚMOUSE_BTN_AUX1ÚBACKÚMOUSE_BTN_AUX2ÚFORWARDÚ	GetButtonrÖ   r  r   r  ÚButtonUp)r-   r   rµ   r¶   Ú
button_mapÚbuttonr  s          r    rx  z$_FigureCanvasWxBase._on_mouse_buttonö  sU  € à�
‰
ŒØ×Ñ˜%×*Ñ*Ó,ÒD°×0BÑ0BÓ0DÔEØ×Ñ Ó&‰ˆˆ1ä×Ñœ{×/Ñ/Ü×Ñ¤×!3Ñ!3Ü×Ñ¤× 1Ñ 1Ü×Ñœ{×/Ñ/Ü×Ñœ{×2Ñ2ð
ˆ
ð —‘Ó"ˆØ—‘ ¨Ó/ˆØ×'Ñ'¨Ó.ˆ	Ø×ÑÔÜÐ+¨T°1°a¸Ø!*°Uô<ß<D¹H½JØ×ÑÔ!ÜÐ+¨T°1°a¸Ø $°	Ø %ô'ç'/¡x¥zØ�^‰^ÔÜÐ-¨t°Q¸¸6Ø!*°Uô<ß<D¹H½Jð r"   c           
      óz  — | j                  |«      \  }}|j                  |j                  z  |j                  z  }|j	                  «        t
        j                  dk(  r/t        | d«      sd| _        n| j                  rd| _        yd| _        t        d| |||| j                  |«      |¬«      j                  «        y)z3Translate mouse wheel events into matplotlib eventsÚ	__WXMAC__Ú_skipwheeleventTFNÚscroll_event)Ústepr  r0  )r-  ÚLinesPerActionÚWheelRotationÚ
WheelDeltar2  r   rØ  r°  rg  r   r  r  )r-   r   rµ   r¶   ri  s        r    rˆ  z#_FigureCanvasWxBase._on_mouse_wheel  s¥   € à×Ñ Ó&‰ˆˆ1à×#Ñ# e×&9Ñ&9Ñ9¸E×<LÑ<LÑLˆà�
‰
Œä�;‰;˜+Ò%Ü˜4Ð!2Ô3Ø'+�Õ$Ø×%Ò%Ø',�Ô$Øà'+�Ô$Ü�> 4¨¨A°DØ!×0Ñ0°Ó7Ø!ô	#ç#+¡8¥:r"   c                 óž   — |j                  «        t        d| g| j                  |«      ¢­| j                  |«      |dœŽj	                  «        y)rP  Úmotion_notify_eventrR  N)r2  r   r-  r  r  r½  s     r    rŠ  z_FigureCanvasWxBase._on_motion$  sJ   € à�
‰
ŒÜÐ(¨$ð 	#Ø×$Ñ$ UÓ+ñ	#à!×0Ñ0°Ó7Ø!ò	#÷ $,¡8¥:r"   c                 óœ   — |j                  «        t        d| g| j                  |«      ¢­| j                  «       |dœŽj	                  «        y)zMouse has entered the window.Úfigure_enter_eventrR  N©r2  r   r-  r  r  r½  s     r    rŒ  z_FigureCanvasWxBase._on_enter,  óH   € à�
‰
ŒÜÐ*¨Dð 	&Ø×'Ñ'¨Ó.ñ	&à $× 3Ñ 3Ó 5Ø$ò	&÷ '/¡h¥jr"   c                 óœ   — |j                  «        t        d| g| j                  |«      ¢­| j                  «       |dœŽj	                  «        y)zMouse has left the window.Úfigure_leave_eventrR  Nrq  r½  s     r    rŽ  z_FigureCanvasWxBase._on_leave4  rr  r"   r&   )r   ©T)_r=   r>   r?   r@   Úrequired_interactive_frameworkr$   Ú
_timer_clsr   ÚclasspropertyÚmanager_classr   r  r  r  ÚWXK_CAPITALÚWXK_LEFTÚWXK_UPÚ	WXK_RIGHTÚWXK_DOWNÚ
WXK_ESCAPEÚWXK_F1ÚWXK_F2ÚWXK_F3ÚWXK_F4ÚWXK_F5ÚWXK_F6ÚWXK_F7ÚWXK_F8ÚWXK_F9ÚWXK_F10ÚWXK_F11ÚWXK_F12Ú
WXK_SCROLLÚ	WXK_PAUSEÚWXK_BACKÚ
WXK_RETURNÚ
WXK_INSERTÚ
WXK_DELETEÚWXK_HOMEÚWXK_ENDÚ
WXK_PAGEUPÚWXK_PAGEDOWNÚWXK_NUMPAD0ÚWXK_NUMPAD1ÚWXK_NUMPAD2ÚWXK_NUMPAD3ÚWXK_NUMPAD4ÚWXK_NUMPAD5ÚWXK_NUMPAD6ÚWXK_NUMPAD7ÚWXK_NUMPAD8ÚWXK_NUMPAD9ÚWXK_NUMPAD_ADDÚWXK_NUMPAD_SUBTRACTÚWXK_NUMPAD_MULTIPLYÚWXK_NUMPAD_DIVIDEÚWXK_NUMPAD_DECIMALÚWXK_NUMPAD_ENTERÚWXK_NUMPAD_UPÚWXK_NUMPAD_RIGHTÚWXK_NUMPAD_DOWNÚWXK_NUMPAD_LEFTÚWXK_NUMPAD_PAGEUPÚWXK_NUMPAD_PAGEDOWNÚWXK_NUMPAD_HOMEÚWXK_NUMPAD_ENDÚWXK_NUMPAD_INSERTÚWXK_NUMPAD_DELETEr  r,   r£  r¨  r«  rº  r´  rÓ  ræ  r   rÉ  rr  rp  rñ   r  r&  r-  rt  rv  rG  rM  r�  rx  rˆ  rŠ  rŒ  rŽ  ro   r"   r    r-  r-  †  s¡  „ ñð &*Ð"Ø€JØ&�D×&Ñ&Ñ'BÓC€Mð:Ø
�‰˜	ð:à
�‰�gð:ð 	�
‰
�Eð:ð 	�‰˜ð	:ð
 	�‰�Vð:ð 	�	‰	�4ð:ð 	�‰�gð:ð 	�‰�Vð:ð 	�‰�xð:ð 	�	‰	�4ð:ð 	�	‰	�4ð:ð 	�	‰	�4ð:ð 	�	‰	�4ð:ð 	�	‰	�4ð:ð 	�	‰	�4ð:ð  	�	‰	�4ð!:ð" 	�	‰	�4ñ#:ð$ 	�	‰	�4ð%:ð& 	�
‰
�Eð':ð( 	�
‰
�Eð):ð* 	�
‰
�Eð+:ð, 	�‰�}ð-:ð. 	�‰�gð/:ð0 	�‰�[ð1:ð2 	�‰�wð3:ð4 	�‰�xð5:ð6 	�‰�xð7:ð8 	�‰�Vð9:ð: 	�
‰
�Eð;:ð< 	�‰�xð=:ð> 	�‰˜ð?:ð@ 	�‰˜ðA:ðB 	�‰˜ðC:ðD 	�‰˜òE:ðF 	�‰˜ðG:ðH 	�‰˜ðI:ðJ 	�‰˜ðK:ðL 	�‰˜ðM:ðN 	�‰˜ðO:ðP 	�‰˜ðQ:ðR 	�‰˜ðS:ðT 	×Ñ˜3ðU:ðV 	×Ñ ðW:ðX 	×Ñ ðY:ðZ 	×Ñ˜cð[:ð\ 	×Ñ˜uð]:ð^ 	×Ñ˜Wð_:ð` 	×Ñ˜$ða:ðb 	×Ñ˜Wðc:ðd 	×Ñ˜Fðe:ðf 	×Ñ˜Fñg:ðh 	×Ñ˜hØ
×Ñ 
Ø
×Ñ˜FØ
×Ñ˜5Ø
×Ñ˜hØ
×Ñ˜hñs:€Góx1+óf
(ò,òóó!ò3ó$Bð6
Ø
×
$Ñ
$ð
àØØØØ*Ø)Ø*Øò
€Iòò+ðZ ð,¨dó ,ó ð,ò&ó".òòòó ò!òGò4.ò(.ò1ó1r"   r-  c                   ó~  — e Zd Zdd„Zd„ Z ej                  eej                  «      Z	 ej                  eej                  «      xZZ ej                  eej                  «      Z ej                  eej                  «      Z ej                  eej"                  «      xZZ ej                  eej(                  «      Zy)ÚFigureCanvasWxNc                 ó  — t         j                  dt        | «      «       t        | j                  | j
                  j                  «      | _        | j
                  j                  | j                  «       d| _	        | j                  |¬«       y)zŒ
        Render the figure using RendererWx instance renderer, or using a
        previously defined renderer if none is specified.
        z%s - draw()Trñ  N)rc   rd   re   rK   rj   re  rl   r  ró  rh  ræ  )r-   rß  s     r    ró  zFigureCanvasWx.draw@  s^   € ô
 	�
‰
�=¤$ t£*Ô-Ü" 4§;¡;°·±·±Ó@ˆŒØ�‰×Ñ˜Ÿ™Ô'ØˆŒØ×Ñ ÐÕ'r"   c                 óR  — t        j                  t        j                  | j                  j
                  j                  «      t        j                  | j                  j
                  j                  «      «      }| j                  j                  t        || j                  j                  «      «       t        j                  |«      r|j                  «       n|}|j                  ||«      st        d|› �«      ‚| j                   r| j                  «        | r| j#                  «        y y )NzCould not save figure to )r   r°   rÁ   rd  re  r¸   rg   ri   ró  rK   rl   r   Úis_writable_file_likerÜ  ÚSaveFiler±  rh  r§  )r-   ÚfiletypeÚfilenamerj   Ú	saved_objs        r    Ú_print_imagezFigureCanvasWx._print_imageK  sÖ   € Ü—‘œ4Ÿ9™9 T§[¡[×%5Ñ%5×%;Ñ%;Ó<ÜŸ9™9 T§[¡[×%5Ñ%5×%<Ñ%<Ó=ó?ˆà�‰×Ñœ F¨D¯K©K¯O©OÓ<Ô=ä×3Ñ3°HÔ=ð ×*Ñ*Ô,à ð 	ð ×!Ñ! (¨HÔ5ÜÐ!:¸8¸*ÐEÓFÐFð
 �=Š=Ø�I‰IŒKñ Ø�L‰L�Nð r"   r&   )r=   r>   r?   ró  r¹  Ú	functoolsÚpartialmethodr   ÚBITMAP_TYPE_BMPÚ	print_bmpÚBITMAP_TYPE_JPEGÚ
print_jpegÚ	print_jpgÚBITMAP_TYPE_PCXÚ	print_pcxÚBITMAP_TYPE_PNGÚ	print_pngÚBITMAP_TYPE_TIFÚ
print_tiffÚ	print_tifÚBITMAP_TYPE_XPMÚ	print_xpmro   r"   r    r±  r±  =  sÊ   „ ó	(òð( (�	×'Ñ'Ø�b×(Ñ(ó*€Ià4˜Y×4Ñ4Ø�b×)Ñ)ó+ð +€J�à'�	×'Ñ'Ø�b×(Ñ(ó*€Ià'�	×'Ñ'Ø�b×(Ñ(ó*€Ià4˜Y×4Ñ4Ø�b×(Ñ(ó*ð *€J�à'�	×'Ñ'Ø�b×(Ñ(ó*�Ir"   r±  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚFigureFrameWxc                óB  •— t         j                  dk(  rt         j                  }nt        j                  dd«      }t        ‰	| �  d d|¬«       t        j                  dt        | «      «       t        | «        || d|«      | _
        t        | j                  || «      }| j                  j                  j                  }|�| j                  |«       t        t         j"                  |j$                  j&                  «      \  }}| j                  j)                  t        j*                  ||«      «       | j                  j-                  d«       | j                  j/                  «        | j1                  «        | j3                  t         j4                  | j6                  «       y )NrÕ  é   éÿÿÿÿ)r•  r–  r,  rb   )r†   r†   )r   rØ  ÚDefaultPositionÚPointr+   r,   rc   rd   re   Ú_set_frame_iconrÚ  r/  ÚmanagerÚtoolbarÚ
SetToolBarrc  rÁ   rd  r¸   rã   ÚSetInitialSizerg  Ú
SetMinSizeÚSetFocusÚFitrn  Ú	EVT_CLOSEÚ	_on_close)
r-   ÚnumÚfigÚcanvas_classr,  rÒ  rÓ  r}   r~   r0   s
            €r    r,   zFigureFrameWx.__init__n  s  ø€ ô �;‰;˜+Ò%Ü×$Ñ$‰Cä—(‘(˜2˜rÓ"ˆCÜ‰Ñ ¨°ÐÔ5ä�
‰
Ð$¤d¨4£jÔ1Ü˜Ôá" 4¨¨SÓ1ˆŒä! $§+¡+¨s°DÓ9ˆà—+‘+×%Ñ%×-Ñ-ˆØÐØ�O‰O˜GÔ$ô ”4—9‘9˜cŸh™hŸm™mÓ,‰ˆˆ1Ø�‰×"Ñ"¤2§7¡7¨1¨a£=Ô1Ø�‰×Ñ˜vÔ&Ø�‰×ÑÔà�‰Œ
à�	‰	”"—,‘, §¡Õ/r"   c                 óø  — t         j                  dt        | «      «       t        d| j                  «      j                  «        | j                  j                  «        d | j                  j                  _        t        j                  | j                  j                  «       	 | j                  j                  | j                  j                  j                  «       |j                  «        y # t        $ r Y Œw xY w)Nz%s - on_close()Úclose_event)rc   rd   re   r   rÚ  r  r´  rÒ  Úframer   ÚdestroyÚmpl_disconnectrÓ  Ú_id_dragÚAttributeErrorr2  r½  s     r    rÚ  zFigureFrameWx._on_close�  s¬   € Ü�
‰
Ð$¤d¨4£jÔ1Ü�= $§+¡+Ó.×7Ñ7Ô9Ø�‰×#Ñ#Ô%ð %)ˆ�‰×ÑÔ!ä�‰�D—K‘K×'Ñ'Ô(ð	Ø�K‰K×&Ñ& t§{¡{×':Ñ':×'CÑ'CÔDð 	�
‰
�øô ò 	Ùð	ús   Â#9C- Ã-	C9Ã8C9)r=   r>   r?   r,   rÚ  rA   rB   s   @r    rË  rË  m  s   ø„ ô0ö>r"   rË  c                   óf   ‡ — e 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ˆ xZS )r/  a’  
    Container/controller for the FigureCanvas and GUI frame.

    It is instantiated by Gcf whenever a new figure is created.  Gcf is
    responsible for managing multiple instances of FigureManagerWx.

    Attributes
    ----------
    canvas : `FigureCanvas`
        a FigureCanvasWx(wx.Panel) instance
    window : wxFrame
        a wxFrame instance - wxpython.org/Phoenix/docs/html/Frame.html
    c                 ó€   •— t         j                  dt        | «      «       |x| _        | _        t
        ‰| �  ||«       y )Nrb   )rc   rd   re   rà  Úwindowr+   r,   )r-   rÚ  rÛ  rà  r0   s       €r    r,   zFigureManagerWx.__init__­  s3   ø€ Ü�
‰
Ð$¤d¨4£jÔ1Ø#(Ð(ˆŒ
�T”[Ü‰Ñ˜ Õ%r"   c                 ó  — t        j                  «       xs
 t        «       }t        |||¬«      }|j                  j
                  }t        j                  «       r4|j                  j                  «        |j                  j                  «        |S )N)rÝ  )r   ÚGetAppr!   rË  rÚ  rÒ  ÚmplÚis_interactiverà  ÚShowr¨  )r0  rÝ  re  rÛ  r   rà  rÒ  s          r    Úcreate_with_canvasz"FigureManagerWx.create_with_canvas²  sd   € ô —	‘	“Ò.œ}›ˆÜ˜c 6¸ÔEˆØ—-‘-×'Ñ'ˆÜ×ÑÔØ�M‰M×ÑÔ Ø�M‰M×#Ñ#Ô%Øˆr"   c                 ó�   — t         j                  j                  «       s(t        j                  «       }|�|j	                  «        y y y r&   )r   r   ÚIsMainLoopRunningré  ÚMainLoop)r0  r   s     r    Ústart_main_loopzFigureManagerWx.start_main_loop½  s7   € ä�v‰v×'Ñ'Ô)Ü—I‘I“KˆEØÐ Ø—‘Õ ð !ð *r"   c                 óÈ   — | j                   j                  «        | j                  j                  «        t        j
                  d   r| j                   j                  «        y y )Nzfigure.raise_window)rà  rì  rÚ  ró  rê  ÚrcParamsÚRaiser5   s    r    ÚshowzFigureManagerWx.showÄ  sB   € à�
‰
�‰ÔØ�‰×ÑÔÜ�<‰<Ð-Ò.Ø�J‰J×ÑÕð /r"   c                 óž   — t         j                  dt        | «      «       | j                  }|r t	        j
                  |j                  «       y y )Nz%s - destroy())rc   rd   re   rà  r   Ú	CallAfterrŸ  )r-   r.   rà  s      r    rá  zFigureManagerWx.destroyË  s8   € ä�
‰
Ð#¤T¨$£ZÔ0Ø—
‘
ˆÙô �L‰L˜Ÿ™Õ%ð r"   c                 ól   — | j                   j                  | j                   j                  «        «       y r&   )rà  ÚShowFullScreenÚIsFullScreenr5   s    r    Úfull_screen_togglez"FigureManagerWx.full_screen_toggleÔ  s$   € à�
‰
×!Ñ! d§j¡j×&=Ñ&=Ó&?Ð"?Õ@r"   c                 ó6   — | j                   j                  «       S r&   )rç  ÚGetTitler5   s    r    Úget_window_titlez FigureManagerWx.get_window_titleØ  s   € à�{‰{×#Ñ#Ó%Ð%r"   c                 ó:   — | j                   j                  |«       y r&   )rç  ÚSetTitle)r-   Útitles     r    Úset_window_titlez FigureManagerWx.set_window_titleÜ  s   € à�‰×Ñ˜UÕ#r"   c           
      óà   — | j                   j                  | j                   j                  t        j                  t        j                  |«      t        j                  |«      «      «      «       y r&   )rç  ÚSetSizeÚClientToWindowSizer   rg  rÁ   rd  )r-   rg   ri   s      r    ÚresizezFigureManagerWx.resizeà  sI   € ð 	�‰×Ñ˜DŸK™K×:Ñ:¼2¿7¹7Ü�I‰I�eÓœdŸi™i¨Ó/ó<1ó 2õ 	3r"   )r=   r>   r?   r@   r,   Úclassmethodrí  rñ  rõ  rá  rû  rþ  r  r  rA   rB   s   @r    r/  r/  ž  sT   ø„ ñô&ð
 ñó ðð ñ!ó ð!òò&òAò&ò$ö3r"   r/  c                 óf   — t        j                  t        t        j                  d| «      «      «      S )z\
    Load a wx.Bitmap from a file in the "images" directory of the Matplotlib
    data.
    Úimages)r   r°   Ústrr   Ú_get_data_path)r·  s    r    Ú_load_bitmapr  ç  s%   € ô
 �9‰9”Sœ×-Ñ-¨h¸ÓAÓBÓCÐCr"   c                 óÞ   — t        j                  «       }dD ]C  }t        j                  t        |«      «      }|j	                  «       s y |j                  |«       ŒE | j                  |«       y )N)zmatplotlib.pngzmatplotlib_large.png)r   Ú
IconBundleÚIconr  ÚIsOkÚAddIconÚSetIcons)rà  ÚbundleÚimageÚicons       r    rÑ  rÑ  ï  sU   € Ü�]‰]‹_€FØ;ò ˆÜ�w‰w”| EÓ*Ó+ˆØ�y‰yŒ{ÙØ�‰�tÕð	ð
 
‡N�N�6Õr"   c                   ó~   ‡ — e Zd Zdej                  dœd„Zed„ «       Zd„ Zˆ fd„Z	ˆ fd„Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zˆ xZS )ÚNavigationToolbar2Wx©rÓ   c          
      óz  — t         j                  j                  | |j                  «       d|¬«       dt         j                  v r| j                  d«       i | _        | j                  D ]Ã  \  }}}}|€| j                  «        Œ| j                  d| j                  |› d�«      t         j                  |||dv rt         j                  nt         j                  ¬«      j                  | j                  |<   | j                  t         j                   t#        | |«      | j                  |   ¬«       ŒÅ || _        | j$                  rU| j'                  «        t        j(                  | t         j*                  ¬«      | _        | j/                  | j,                  «       | j1                  «        t3        j                  | |«       y )	NrÎ  r  ÚwxMac)é   r  z.png)ÚPanÚZoom)rj   ÚbmpDisabledÚlabelÚ	shortHelpÚkindr®  )r   ÚToolBarr,   rù  ÚPlatformInfoÚSetToolBitmapSizeÚwx_idsÚ	toolitemsÚAddSeparatorÚAddToolÚ_iconr	  Ú
ITEM_CHECKÚITEM_NORMALÚIdrn  ÚEVT_TOOLr  Ú_coordinatesÚAddStretchableSpaceÚ
StaticTextÚALIGN_RIGHTÚ_label_textÚ
AddControlÚRealizer   )r-   rÚ  ÚcoordinatesrÓ   ÚtextÚtooltip_textÚ
image_fileÚcallbacks           r    r,   zNavigationToolbar2Wx.__init__ú  sc  € Ü
�
‰
×Ñ˜D &×"2Ñ"2Ó"4°bÀÐÔFà”b—o‘oÑ%Ø×"Ñ" 8Ô,ØˆŒØ8<¿¹ò 	,Ñ4ˆD�, 
¨HØˆ|Ø×!Ñ!Ô#Øà—‘ØØŸ:™:¨¨°DÐ&9Ó:Ü "§¡Ø¨,Ø+/°?Ñ+Bœ"Ÿ-š-Ü!Ÿ~™~ð ó 0÷ ‘ð �K‰K˜Ñð �I‰I”b—k‘k¤7¨4°Ó#:ØŸ™ TÑ*ð õ ,ð	,ð  (ˆÔØ×ÒØ×$Ñ$Ô&Ü!Ÿ}™}¨T¼¿¹ÔHˆDÔØ�O‰O˜D×,Ñ,Ô-à�‰Œä×#Ñ# D¨&Õ1r"   c                 óJ  — t         j                  j                  t        j                  d| «      «      }t        j                  |j                  d«      «      }	 t        j                  j                  «       j                  «       }|rt        j                  j                  t        j                  «      }|dd	d
…f   dk(  j'                  d¬«      }|j)                  «       |j+                  «       |j-                  «       f||d	d
…f<   t        j.                  j1                  |j2                  d   |j2                  d   |j5                  «       «      S # t        $ rÊ t        j                  j                  t        j                  «      }t        j                  j                  t        j                  «      }d|j                   z  d|j"                  z  z   d|j$                  z  z   dz  }d|j                   z  d|j"                  z  z   d|j$                  z  z   dz  }||z
  dkD  }Y �Œœw xY w)z»
        Construct a `wx.Bitmap` suitable for use as icon from an image file
        *name*, including the extension and relative to Matplotlib's "images"
        data directory.
        r	  ÚRGBAg‰A`åÐ"Ó?gbX9´Èâ?gÉv¾Ÿ/½?r"  gš™™™™™É?.Nr…   r   rÎ  )Úaxisr   )ÚPILÚImageÚopenr   r  ÚnpÚarrayÚconvertr   ÚSystemSettingsÚGetAppearanceÚIsDarkrä  Ú	GetColourÚSYS_COLOUR_WINDOWÚSYS_COLOUR_WINDOWTEXTÚredÚgreenÚblueÚallÚRedÚGreenÚBluer°   r±   r¯   r²   )	rE   Úpilimgr  ÚdarkÚbgr  Úbg_lumÚfg_lumÚ
black_masks	            r    r)  zNavigationToolbar2Wx._icon  s¯  € ô —‘—‘¤× 4Ñ 4°X¸tÓ DÓEˆä—‘˜Ÿ™¨Ó/Ó0ˆð		(Ü×$Ñ$×2Ñ2Ó4×;Ñ;Ó=ˆDñ Ü×"Ñ"×,Ñ,¬R×-EÑ-EÓFˆBØ  R a R ™.¨AÑ-×2Ñ2¸Ð2Ó;ˆJØ%'§V¡V£X¨r¯x©x«z¸2¿7¹7»9Ð$EˆE�*˜b˜q˜b�.Ñ!Ü�y‰y×'Ñ'Ø�K‰K˜‰N˜EŸK™K¨™N¨E¯M©M«Oó=ð 	=øô ò 	(ä×"Ñ"×,Ñ,¬R×-AÑ-AÓBˆBÜ×"Ñ"×,Ñ,¬R×-EÑ-EÓFˆBà˜RŸV™V‘m d¨R¯X©X¡oÑ5¸¸r¿w¹w¹ÑFÈ#ÑMˆFØ˜RŸV™V‘m d¨R¯X©X¡oÑ5¸¸r¿w¹w¹ÑFÈ#ÑMˆFØ˜F‘? RÑ'‹Dð	(ús   Á,E ÅCH"È!H"c                 ó  — d| j                   v r6| j                  | j                   d   | j                  j                  dk(  «       d| j                   v r7| j                  | j                   d   | j                  j                  dk(  «       y y )Nr  ÚPANr  ÚZOOM)r%  Ú
ToggleToolÚmoderE   r5   s    r    Ú_update_buttons_checkedz,NavigationToolbar2Wx._update_buttons_checked5  sg   € Ø�D—K‘KÑØ�O‰O˜DŸK™K¨Ñ.°·	±	·±À%Ñ0GÔHØ�T—[‘[Ñ Ø�O‰O˜DŸK™K¨Ñ/°·±·±À6Ñ1IÕJð !r"   c                 ó>   •— t        ‰| �  |Ž  | j                  «        y r&   )r+   Úzoomr[  ©r-   r.   r0   s     €r    r]  zNavigationToolbar2Wx.zoom;  s   ø€ Ü‰‰�dÑØ×$Ñ$Õ&r"   c                 ó>   •— t        ‰| �  |Ž  | j                  «        y r&   )r+   Úpanr[  r^  s     €r    r`  zNavigationToolbar2Wx.pan?  s   ø€ Ü‰‰�TÑØ×$Ñ$Õ&r"   c           	      ó€  — | j                   j                  «       \  }}}| j                   j                  «       }t        j                  | j                   j                  «       dt        j                  d   ||t        j                  t        j                  z  «      }|j                  |«       |j                  «       t        j                  k(  �rt        j                  |j                  «       «      }t         j#                  dt%        | «      |«       ||j'                  «          }|j(                  dd  }	|	| j                   j+                  «       v r||	k7  rt         j-                  d|	||	«       |	}t        j                  d   r&t/        |j0                  «      t        j                  d<   	 | j                   j2                  j5                  ||¬«       y y # t6        $ rc}
t        j8                  | j                   j                  «       t/        |
«      d¬«      }|j                  «        |j;                  «        Y d }
~
y d }
~
ww xY w)	NzSave to filezsavefig.directoryz%s - Save file path: %sr   zDextension %s did not match the selected image type %s; going with %s)ÚformatzMatplotlib error)r•  ÚmessageÚcaption)rÚ  rÓ  Úget_default_filenamer   Ú
FileDialogrù  rê  ró  ÚFD_SAVEÚFD_OVERWRITE_PROMPTÚSetFilterIndexÚ	ShowModalÚID_OKÚpathlibr   ÚGetPathrc   rd   re   ÚGetFilterIndexÚsuffixÚget_supported_filetypesÚwarningr
  r•  re  ÚsavefigÚ	ExceptionÚMessageDialogrô  )r-   r.   rÉ  rÏ  rÍ  Údefault_fileÚdialogr›   ÚfmtrÐ  Úes              r    Úsave_figurez NavigationToolbar2Wx.save_figureC  s¿  € à(,¯©×(LÑ(LÓ(NÑ%ˆ	�4˜Ø—{‘{×7Ñ7Ó9ˆÜ—‘Ø�K‰K×!Ñ!Ó# ^Ü�L‰LÐ,Ñ-¨|¸YÜ�J‰Jœ×/Ñ/Ñ/ó1ˆð 	×Ñ˜lÔ+Ø×ÑÓ¤§¡Ó)Ü—<‘< §¡Ó 0Ó1ˆDÜ�J‰JÐ0´$°t³*¸dÔCØ�v×,Ñ,Ó.Ñ/ˆCØ—+‘+˜a˜b�/ˆCØ�d—k‘k×9Ñ9Ó;Ñ;ÀÀsÂ
ô —‘ð <à  # sô,ð �ä�|‰|Ð/Ò0Ü47¸¿¹Ó4D”—‘Ð0Ñ1ð!Ø—‘×"Ñ"×*Ñ*¨4¸Ð*Õ<ð! *øô" ò !Ü×)Ñ)ØŸ;™;×0Ñ0Ó2¼CÀ»FØ.ô0�ð × Ñ Ô"Ø—‘× Ñ ûð!ús   Æ('G Ç	H=ÇAH8È8H=c                 óÂ   — | j                   j                  j                  j                  }|||z
  |||z
  f| j                   _        | j                   j                  «        y r&   )rÚ  re  r¸   ri   ri  r§  )r-   r   rá  râ  rã  rä  ri   s          r    Údraw_rubberbandz$NavigationToolbar2Wx.draw_rubberbandd  sJ   € Ø—‘×#Ñ#×(Ñ(×/Ñ/ˆØ(*¨F°R©K¸¸VÀb¹[Ð'Iˆ�‰Ô$Ø�‰×ÑÕr"   c                 óZ   — d | j                   _        | j                   j                  «        y r&   )rÚ  ri  r§  r5   s    r    Úremove_rubberbandz&NavigationToolbar2Wx.remove_rubberbandi  s   € Ø'+ˆ�‰Ô$Ø�‰×ÑÕr"   c                 óT   — | j                   r| j                  j                  |«       y y r&   )r.  r2  ÚSetLabel©r-   ry   s     r    Úset_messagez NavigationToolbar2Wx.set_messagem  s$   € Ø×ÒØ×Ñ×%Ñ% aÕ(ð r"   c                 óJ  — | j                   j                  dkD  }| j                   j                  t        | j                   «      dz
  k  }d| j                  v r| j	                  | j                  d   |«       d| j                  v r | j	                  | j                  d   |«       y y )Nr   r   ÚBackÚForward)Ú
_nav_stackÚ_posÚlenr%  Ú
EnableTool)r-   Úcan_backwardÚcan_forwards      r    Úset_history_buttonsz(NavigationToolbar2Wx.set_history_buttonsq  sƒ   € Ø—‘×+Ñ+¨aÑ/ˆØ—o‘o×*Ñ*¬S°·±Ó-AÀAÑ-EÑEˆØ�T—[‘[Ñ Ø�O‰O˜DŸK™K¨Ñ/°Ô>Ø˜Ÿ™Ñ#Ø�O‰O˜DŸK™K¨	Ñ2°KÕ@ð $r"   ru  )r=   r>   r?   r   Ú	TB_BOTTOMr,   rñ   r)  r[  r]  r`  ry  r{  r}  r�  r‹  rA   rB   s   @r    r  r  ù  sS   ø„ ð2¸"¿,¹,ô 2ð@ ñ=ó ð=ò4Kô'ô'ò!òBò
ò)öAr"   r  c                   óJ   — e Zd Zdej                  fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)Ú	ToolbarWxNc                 ó~  — |€|j                   j                  «       }t        j                  | |«       t        j
                  j                  | |d|¬«       | j                  «       | _        t	        j                  | t        j                  ¬«      | _
        | j                  | j                  «       i | _        i | _        y )NrÎ  r  )rÚ  rù  r   r,   r   r"  r/  Ú_spacer0  r1  r2  r3  Ú
_toolitemsÚ_groups)r-   Útoolmanagerr•  rÓ   s       r    r,   zToolbarWx.__init__}  s�   € Øˆ>Ø ×'Ñ'×1Ñ1Ó3ˆFÜ×"Ñ" 4¨Ô5Ü
�
‰
×Ñ˜D &¨"°EÐÔ:Ø×.Ñ.Ó0ˆŒÜŸ=™=¨´R·^±^ÔDˆÔØ�‰˜×(Ñ(Ô)ØˆŒØˆ�r"   c                 ó‚   — t        | j                  «      D �cg c]  }| j                  |«      |k(  r|‘Œ c}\  }|S c c}w )zÏ
        Find the position (index) of a wx.ToolBarToolBase in a ToolBar.

        ``ToolBar.GetToolPos`` is not useful because wx assigns the same Id to
        all Separators and StretchableSpaces.
        )ÚrangeÚ
ToolsCountÚGetToolByPos)r-   Útoolr,  s      r    Ú_get_tool_poszToolbarWx._get_tool_posˆ  sC   € ô  % T§_¡_Ó5ö 3˜Ø×$Ñ$ SÓ)¨TÒ1ò ò 3‰ˆàˆ
ùò3s   ˜<c           
      óÀ  ‡ ‡— |‰ j                   vr7‰ j                  ‰ j                  ‰ j                  «      «      ‰ j                   |<   ‰ j                   |   }t	        ‰ j
                  t        ‰ j                  «      «      D �cg c]$  }|j                  «       r|j                  «       s|‘Œ& }	}|dk\  r4||	d   k(  rdn(‰ j                  |	|	j                  |«      dz
     «      dz   }
n‰ j                  |«      dz   }
|
|z   }|rat        j                  |«      }|st        j                  nt        j                  }‰ j!                  |d‰|t        j"                  ||xs d«      }nb‰ j%                  ‰«      d   dz   df}|rt        j&                  ‰ d‰|¬«      }nt        j(                  ‰ d‰|¬«      }‰ j+                  ||‰¬«      }‰ j-                  «        ˆˆ fd„}|r"‰ j/                  t        j0                  ||«       n j/                  t        j2                  |«       ‰ j4                  j7                  ‰g «       ‰ j4                  ‰   j9                  ||f«       y c c}w )	Nr   r   rÎ  Ú é
   ra  ©r  c                 ó(   •— ‰j                  ‰«       y r&   )Útrigger_tool)r   rE   r-   s    €€r    Úhandlerz'ToolbarWx.add_toolitem.<locals>.handlerµ  s   ø€ Ø×Ñ˜dÕ#r"   )r’  ÚInsertSeparatorr™  r�  rc  r—  r•  r–  ÚIsSeparatorÚIsStretchableSpaceÚindexr  r)  r   r+  r*  Ú
InsertToolr	  ÚGetTextExtentÚToggleButtonÚButtonÚInsertControlr4  rn  r-  rw  r‘  Ú
setdefaultrÇ  )r-   rE   ÚgroupÚpositionr8  ÚdescriptionÚtoggleÚsepÚtÚsepsÚstartÚidxrà  r!  r˜  rã   r2  r   s   ``                r    Úadd_toolitemzToolbarWx.add_toolitem“  s  ù€ ð ˜Ÿ™Ñ$Ø"&×"6Ñ"6Ø×"Ñ" 4§;¡;Ó/ó#1ˆD�L‰L˜Ñà�l‰l˜5Ñ!ˆä˜t×0Ñ0´%¸¿¹Ó2HÓIö C�aØ—=‘=”?¨1×+?Ñ+?Ô+Aò ð Cˆð Cð �qŠ=ð   a¡š.‘QØ×,Ñ,¨T°$·*±*¸S³/ÀAÑ2EÑ-FÓGÈ!ÑKñ ð ×&Ñ& sÓ+¨aÑ/ˆEØ�hÑˆÙÜ&×,Ñ,¨ZÓ8ˆCÙ)/”2—>’>´R·]±]ˆDØ—?‘? 3¨¨D°#´r·}±}ÀdØ#.Ò#4°"ó6‰Dð ×&Ñ& tÓ,¨QÑ/°"Ñ4°bÐ9ˆDÙÜŸ/™/¨$°°D¸tÔD‘äŸ)™) D¨"¨d¸Ô>�Ø×%Ñ% c¨7¸$Ð%Ó?ˆDØ�‰Œõ	$ñ Ø�I‰I”b—k‘k 7¨DÕ1à�L‰Lœ×)Ñ)¨7Ô3à�‰×"Ñ" 4¨Ô,Ø�‰˜Ñ×$Ñ$ d¨G _Õ5ùòGCs   Â)Ic                 ó  — || j                   vry | j                   |   D ]Q  \  }}|j                  «       s| j                  |j                  |«       Œ3|j	                  «       j                  |«       ŒS | j                  «        y r&   )r‘  Ú	IsControlrY  r,  Ú
GetControlÚSetValuer§  )r-   rE   Útoggledr˜  r   s        r    Útoggle_toolitemzToolbarWx.toggle_toolitemÀ  si   € Ø�t—‘Ñ&ØØ!Ÿ_™_¨TÑ2ò 	4‰MˆD�'Ø—>‘>Ô#Ø—‘ §¡¨Õ1à—‘Ó!×*Ñ*¨7Õ3ð		4ð
 	�‰�r"   c                 ó‚   — | j                   |   D ]   \  }}| j                  |j                  «       Œ" | j                   |= y r&   )r‘  Ú
DeleteToolr,  )r-   rE   r˜  r   s       r    Úremove_toolitemzToolbarWx.remove_toolitemÊ  s:   € Ø!Ÿ_™_¨TÑ2ò 	%‰MˆD�'Ø�O‰O˜DŸG™GÕ$ð	%à�O‰O˜DÑ!r"   c                 ó:   — | j                   j                  |«       y r&   )r2  r  r€  s     r    r�  zToolbarWx.set_messageÏ  s   € Ø×Ñ×!Ñ! !Õ$r"   )r=   r>   r?   r   rŒ  r,   r™  r´  rº  r½  r�  ro   r"   r    rŽ  rŽ  |  s*   „ Ø+/°r·|±|ó 	ò	ò+6òZò"ó
%r"   rŽ  c                   ó   — e Zd Zd„ Zy)ÚConfigureSubplotsWxc                 ó.   — t         j                  | «       y r&   )r  Úconfigure_subplots©r-   r.   s     r    ÚtriggerzConfigureSubplotsWx.triggerÕ  s   € Ü×/Ñ/°Õ5r"   N©r=   r>   r?   rÄ  ro   r"   r    rÀ  rÀ  Ó  s   „ ó6r"   rÀ  c                   ó   — e Zd Zd„ Zy)ÚSaveFigureWxc                 óJ   — t         j                  | j                  «       «       y r&   )r  ry  Ú"_make_classic_style_pseudo_toolbarrÃ  s     r    rÄ  zSaveFigureWx.triggerÛ  s   € Ü×(Ñ(Ø×3Ñ3Ó5õ	7r"   NrÅ  ro   r"   r    rÇ  rÇ  Ù  s   „ ó7r"   rÇ  c                   ó   — e Zd Zd„ Zd„ Zy)ÚRubberbandWxc                 óT   — t         j                  | j                  «       d ||||«       y r&   )r  r{  rÉ  )r-   rá  râ  rã  rä  s        r    r{  zRubberbandWx.draw_rubberbandâ  s'   € Ü×,Ñ,Ø×3Ñ3Ó5°t¸RÀÀRÈõ	Mr"   c                 óJ   — t         j                  | j                  «       «       y r&   )r  r}  rÉ  r5   s    r    r}  zRubberbandWx.remove_rubberbandæ  s   € Ü×.Ñ.Ø×3Ñ3Ó5õ	7r"   N)r=   r>   r?   r{  r}  ro   r"   r    rË  rË  à  s   „ òMó7r"   rË  c                   óF   ‡ — e Zd ZdZdgZg d¢Zˆ fd„Zd„ Zed„ «       Z	ˆ xZ
S )Ú_HelpDialogN)ÚActionÚ	ShortcutsÚDescription)rL   éŒ   rN   c                 ó8  •— t         ‰| �  |dt        j                  t        j                  z  ¬«       t        j
                  t        j                  «      }t        j                  dddd«      }| j                  «       j                  «       }t        | j                  |z   «      D ]u  \  }}t        || j                  «      D ]W  \  }}	t        j                  | |¬«      }
|dk(  r|
j                  |«       |
j!                  |	«       |j#                  |
ddd«       ŒY Œw |j#                  |dt        j$                  d«       t        j&                  | t        j(                  «      }|j#                  |dt        j*                  t        j$                  z  d«       | j-                  |«       |j/                  | «       | j1                  «        | j3                  t        j4                  | j6                  «       |j3                  t        j8                  | j6                  «       y )NÚHelp)r  rÓ   r   r…   é   é   r�  )r+   r,   r   ÚDEFAULT_DIALOG_STYLEÚRESIZE_BORDERÚBoxSizerÚVERTICALÚFlexGridSizerÚGetFontÚMakeBoldrÅ  ÚheadersÚzipÚwidthsr0  rv   ÚWrapÚAddÚALLr¨  rk  ÚALIGN_CENTER_HORIZONTALÚSetSizerrØ  ÚLayoutrn  rÙ  rÚ  Ú
EVT_BUTTON)r-   r•  Úhelp_entriesÚsizerÚ
grid_sizerrT   ÚrÚrowÚcolrg   r  Úokr0   s               €r    r,   z_HelpDialog.__init__ð  s…  ø€ Ü‰Ñ˜ vÜ!×6Ñ6¼×9IÑ9IÑIð 	ô 	Kô —‘œBŸK™KÓ(ˆÜ×%Ñ% a¨¨A¨qÓ1ˆ
à�|‰|‹~×&Ñ&Ó(ˆÜ §¡¨|Ñ ;Ó<ò 	/‰FˆAˆsÜ # C¨¯©Ó 5ò /‘��eÜŸ™ d°#Ô6�Ø˜’6Ø—M‘M $Ô'Ø—
‘
˜5Ô!Ø—‘˜u a¨¨AÕ.ñ/ð	/ð 	�	‰	�*˜a¤§¡¨Ô+Ü�Y‰Y�tœRŸX™XÓ&ˆØ�	‰	�"�aœ×3Ñ3´b·f±fÑ<¸aÔ@Ø�‰�eÔØ�	‰	�$ŒØ�‰ŒØ�	‰	”"—,‘, §¡Ô/Ø
�‰”—‘˜tŸ~™~Õ.r"   c                 óZ   — d t         _        | j                  «        |j                  «        y r&   )rÏ  Ú	_instanceÚDestroyLaterr2  r½  s     r    rÚ  z_HelpDialog._on_close	  s   € Ø $ŒÔØ×ÑÔØ�
‰
�r"   c                 ó¢   — | j                   r| j                   j                  «        y  | ||«      | _         | j                   j                  «        y r&   )rñ  rô  rì  )r0  r•  ré  s      r    rõ  z_HelpDialog.show  s<   € ð �=Š=Ø�M‰M×ÑÔ!ØÙ˜F LÓ1ˆŒØ�‰×ÑÕr"   )r=   r>   r?   rñ  rß  rá  r,   rÚ  r  rõ  rA   rB   s   @r    rÏ  rÏ  ë  s3   ø„ Ø€IØ5Ð6€GÚ€Fô/ò2ð
 ñó ôr"   rÏ  c                   ó   — e Zd Zd„ Zy)ÚHelpWxc                 ó�   — t         j                  | j                  j                  j	                  «       | j                  «       «       y r&   )rÏ  rõ  re  rÚ  ÚGetTopLevelParentÚ_get_help_entriesrÃ  s     r    rÄ  zHelpWx.trigger  s1   € Ü×Ñ˜Ÿ™×+Ñ+×=Ñ=Ó?Ø×/Ñ/Ó1õ	3r"   NrÅ  ro   r"   r    rõ  rõ    s   „ ó3r"   rõ  c                   ó   — e Zd Zd„ Zy)ÚToolCopyToClipboardWxc                 óú  — | j                   j                  s| j                   j                  «        | j                   j                  j	                  «       rt
        j                  j                  «       sy 	 t
        j                  j                  t        j                  | j                   j                  «      «       t
        j                  j                  «        y # t
        j                  j                  «        w xY wr&   )rÚ  rh  ró  rj   r  r   rš  rœ  r�  r˜  rŸ  )r-   r.   r/   s      r    rÄ  zToolCopyToClipboardWx.trigger!  s”   € Ø�{‰{×#Ò#Ø�K‰K×ÑÔØ�{‰{×!Ñ!×&Ñ&Ô(´·±×0DÑ0DÔ0FØð	$Ü�O‰O×#Ñ#¤B×$7Ñ$7¸¿¹×8JÑ8JÓ$KÔLä�O‰O×!Ñ!Õ#øŒB�O‰O×!Ñ!Õ#ús   Á5AC Ã C:NrÅ  ro   r"   r    rú  rú    s   „ ó$r"   rú  c                   ó,   — e Zd ZeZeZej                  Zy)Ú
_BackendWxN)	r=   r>   r?   r±  ÚFigureCanvasr/  ÚFigureManagerrñ  Úmainloopro   r"   r    rý  rý  0  s   „ à!€LØ#€MØ×.Ñ.�Hr"   rý  )Mr@   rº  ÚloggingrÁ   rl  r  r*  Únumpyr@  Ú	PIL.Imager=  Ú
matplotlibrê  Úmatplotlib.backend_basesr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Úmatplotlib._pylab_helpersr   Úmatplotlib.pathr   Úmatplotlib.transformsr   r   Ú	getLoggerr=   rc   rå   Ú	lru_cacher!   r$   Ú
deprecatedrK   rÏ   rf  r-  r±  ÚFramerË  r/  r  rÑ  r"  r  rŽ  Ú_register_tool_classÚConfigureSubplotsBaserÀ  ÚSaveFigureBaserÇ  ÚRubberbandBaserË  ÚDialogrÏ  ÚToolHelpBaserõ  ÚToolCopyToClipboardBaserú  Ú_toolbar2_classÚ_toolmanager_toolbar_classÚexportrý  ro   r"   r    ú<module>r     s˜  ðñó Û Û Û Û 
Û ã Û ã ÷B÷ B÷ B÷ Bñ B÷ 2Ñ 1Ý )Ý  Ý *ã 	à€w×Ñ˜Ó"€ð
 €ð €×Ñ�QÓñó ðô ˆiô  ð& €‡�Ø	�˜y°,ØØFôHôLC�ó LCó	HðLCô^j9Ð+ô j9ôZt1Ð*¨B¯H©Hô t1ôn-*Ð(ô -*ô`.�B—H‘Hô .ôbF3Ð'ô F3òRDòô~AÐ-¨r¯z©zô ~AôFT%Ð! 2§:¡:ô T%ðn $€×#Ñ#Ð$7Ó8ô6˜-×=Ñ=ó 6ó 9ð6ð
 $€×#Ñ#Ð$7Ó8ô7�=×/Ñ/ó 7ó 9ð7ð $€×#Ñ#Ð$7Ó8ô7�=×/Ñ/ó 7ó 9ð7ô*�"—)‘)ô *ðZ $€×#Ñ#Ð$7Ó8ô3ˆ]×'Ñ'ó 3ó 9ð3ð $€×#Ñ#Ð$7Ó8ô	$˜M×AÑAó 	$ó 9ð	$ð #7€Ô Ø-6€Ô *ð 
‡�ô/�ó /ó ñ/r"   