§
    ‡ÛgÿÈ  ã                   óà  — 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j&        e'¦  «        Z(dZ) ej*        d	¦  «        d6d
„¦   «         Z+ ej,        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%j1        ¦  «        Z2 G d„ de2¦  «        Z3 G d„ de%j4        ¦  «        Z5 G d „ d!e¦  «        Z6d"„ Z7d#„ Z8 G d$„ d%ee%j9        ¦  «        Z: G d&„ d'ee%j9        ¦  «        Z; ej<        e2¦  «         G d(„ d)ej=        ¦  «        ¦   «         Z> ej<        e2¦  «         G d*„ d+ej?        ¦  «        ¦   «         Z@ ej<        e2¦  «         G d,„ d-ejA        ¦  «        ¦   «         ZB G d.„ d/e%jC        ¦  «        ZD ej<        e2¦  «         G d0„ d1ejE        ¦  «        ¦   «         ZF ej<        e2¦  «         G d2„ d3ejG        ¦  «        ¦   «         ZHe:e6_I        e;e6_J        ejK         G d4„ d5e¦  «        ¦   «         ZLdS )7zÒ
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   ú3.6c                 ó´   — t          j        || dt           j        t           j        z  ¬¦  «        }|                     ¦   «          |                     ¦   «          dS )z4Signal an error condition with a popup error dialog.zMatplotlib backend_wx error)ÚparentÚmessageÚcaptionÚstyleN)ÚwxÚMessageDialogÚOKÚCENTREÚ	ShowModalÚDestroy)Úmsgr   Údialogs      úT/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/backends/backend_wx.pyÚerror_msg_wxr(   *   sX   € õ Ô VØ&)Ø&CÝ$&¤E­B¬IÑ$5ð7ñ 7ô 7€Fð ×ÒÑÔÐØ
‡N‚NÑÔÐØˆ4ó    é   c                  ó~   — t          j        d¦  «        } |                      d¦  «         t          j        ¦   «          | S )NFT)r   ÚAppÚSetExitOnFrameDeleter   Ú_setup_new_guiapp)Úwxapps    r'   Ú_create_wxappr0   7   s7   € åŒF�5‰MŒM€EØ	×Ò˜tÑ$Ô$Ð$Ý	ÔÑÔÐØ€Lr)   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          ¦   «         j        |i |¤Ž d S ©N)r   ÚTimerÚ_timerÚ	_on_timerÚNotifyÚsuperÚ__init__)ÚselfÚargsÚkwargsÚ	__class__s      €r'   r:   zTimerWx.__init__B   s>   ø€ Ý”h‘j”jˆŒØ!œ^ˆŒÔØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r)   c                 óP   — | j                              | j        | j        ¦  «         d S r4   )r6   ÚStartÚ	_intervalÚ_single©r;   s    r'   Ú_timer_startzTimerWx._timer_startG   s$   € ØŒ×Ò˜$œ.¨$¬,Ñ7Ô7Ð7Ð7Ð7r)   c                 ó8   — | j                              ¦   «          d S r4   )r6   ÚStoprC   s    r'   Ú_timer_stopzTimerWx._timer_stopJ   s   € ØŒ×ÒÑÔÐÐÐr)   c                 ód   — | j                              ¦   «         r|                      ¦   «          d S d S r4   )r6   Ú	IsRunningrD   rC   s    r'   Ú_timer_set_intervalzTimerWx._timer_set_intervalM   s:   € ØŒ;× Ò Ñ"Ô"ð 	 Ø×ÒÑÔÐÐÐð	 ð 	 r)   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r:   rD   rG   rJ   Ú__classcell__©r>   s   @r'   r2   r2   ?   sk   ø€ € € € € Ø9Ð9ð*ð *ð *ð *ð *ð
8ð 8ð 8ðð ð ð ð  ð  ð  ð  ð  ð  r)   r2   z2.0r   Úbackendz
the futureÚwxaggz7See the Matplotlib usage FAQ for more info on backends.)ÚnameÚobj_typeÚremovalÚalternativeÚaddendumc                   óT  ‡ — 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 ej        d¦  «        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)Úitalicr_   Úoblique)ÚSansÚRomanÚScriptÚ
DecorativeÚModernÚCourierÚcourierc                 ó4  •— t          ¦   «                              ¦   «          t                               dt	          | ¦  «        ¦  «         |                     ¦   «         | _        |                     ¦   «         | _        || _	        i | _
        || _        d| _        dS )z)Initialise a wxWindows renderer instance.ú%s - __init__()N)r9   r:   Ú_logÚdebugÚtypeÚGetWidthÚwidthÚ	GetHeightÚheightÚbitmapÚfontdÚdpiÚgc)r;   rx   rz   r>   s      €r'   r:   zRendererWx.__init__Š   sx   ø€ å‰Œ×ÒÑÔÐÝ�
Š
Ð$¥d¨4¡j¤jÑ1Ô1Ð1Ø—_’_Ñ&Ô&ˆŒ
Ø×&Ò&Ñ(Ô(ˆŒØˆŒØˆŒ
ØˆŒØˆŒˆˆr)   c                 ó   — dS ©NT© rC   s    r'   ÚflipyzRendererWx.flipy•   ó   € àˆtr)   r   c                 ó   — dS r}   r~   rC   s    r'   Úoffset_text_heightzRendererWx.offset_text_height™   r€   r)   c                 ó,  — |rt          j        |¦  «        }| j        €|                      ¦   «         }n| j        }|j        }|                      ||¦  «        }|                     |t          j        ¦  «         | 	                    |¦  «        \  }}}	}
|||	fS r4   )
r   Ú
strip_mathr{   Únew_gcÚgfx_ctxÚget_wx_fontÚSetFontr   ÚBLACKÚGetFullTextExtent)r;   ÚsÚpropÚismathr{   r†   ÚfontÚwÚhÚdescentÚleadings              r'   Úget_text_width_height_descentz(RendererWx.get_text_width_height_descent�   s“   € ð ð 	$ÝÔ  Ñ#Ô#ˆAàŒ7ˆ?Ø—’‘”ˆBˆBà”ˆBØ”*ˆØ×Ò  4Ñ(Ô(ˆØ�Š˜�bœhÑ'Ô'Ð'Ø!(×!:Ò!:¸1Ñ!=Ô!=Ñˆˆ1ˆg�wà�!�Wˆ}Ðr)   c                 ó   — | j         | j        fS r4   )ru   rw   rC   s    r'   Úget_canvas_width_heightz"RendererWx.get_canvas_width_height®   s   € àŒz˜4œ;Ð&Ð&r)   c                 ó(  — |                      ¦   «         }|�|j        }|j        }|j        |k    rb||_        |€|                     ¦   «          d S |                     |d         | j        |d         z
  |d         z
  |d         |d         ¦  «         d S d S )Nr   r*   é   é   )Úget_clip_rectangleÚboundsr†   Ú_lastcliprectÚ	ResetClipÚCliprw   )r;   r{   Ú
new_boundsr†   s       r'   Úhandle_clip_rectanglez RendererWx.handle_clip_rectangle²   s®   € Ø×*Ò*Ñ,Ô,ˆ
ØÐ!Ø#Ô*ˆJØ”*ˆØÔ  JÒ.Ð.Ø$.ˆGÔ!ØÐ!Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#à—’˜Z¨œ]Ø!œ[¨:°a¬=Ñ8¸:Àa¼=ÑHØ'¨œ]¨J°q¬Mñ;ô ;ð ;ð ;ð ;ð /Ð.r)   c                 ó„  — |                       ¦   «         }|                     |¦  «        D ]•\  }}|t          j        k    r |j        |Ž  Œ |t          j        k    r |j        |Ž  Œ;|t          j        k    r |j        |Ž  ŒV|t          j	        k    r |j
        |Ž  Œq|t          j        k    r|                     ¦   «          Œ–|S r4   )Ú
CreatePathÚiter_segmentsr   ÚMOVETOÚMoveToPointÚLINETOÚAddLineToPointÚCURVE3ÚAddQuadCurveToPointÚCURVE4ÚAddCurveToPointÚ	CLOSEPOLYÚCloseSubpath)r†   ÚpathÚ	transformÚwxpathÚpointsÚcodes         r'   Úconvert_pathzRendererWx.convert_pathÀ   sÙ   € à×#Ò#Ñ%Ô%ˆØ ×.Ò.¨yÑ9Ô9ð 
	&ð 
	&‰LˆF�DØ•t”{Ò"Ð"Ø"�Ô" FÐ+Ð+Ð+Ø�œÒ$Ð$Ø%�Ô% vÐ.Ð.Ð.Ø�œÒ$Ð$Ø*�Ô*¨FÐ3Ð3Ð3Ø�œÒ$Ð$Ø&�Ô&¨Ð/Ð/Ð/Ø�œÒ'Ð'Ø×#Ò#Ñ%Ô%Ð%øØˆr)   Nc                 ó  — |                      ¦   «          |                      |¦  «         |j        }|t          ¦   «                              dd¦  «                             d| j        ¦  «        z   }|                      |||¦  «        }|�P|                     t          j
        |                     |¦  «        ¦  «        ¦  «         |                     |¦  «         n|                     |¦  «         |                     ¦   «          d S )Ng      ð?g      ð¿ç        )ÚselectrŸ   r†   r   ÚscaleÚ	translaterw   r²   ÚSetBrushr   ÚBrushÚget_wxcolourÚDrawPathÚ
StrokePathÚunselect)r;   r{   r­   r®   ÚrgbFacer†   r¯   s          r'   Ú	draw_pathzRendererWx.draw_pathÐ   sá   € à
�	Š	‰ŒˆØ×"Ò" 2Ñ&Ô&Ð&Ø”*ˆØÝ‰JŒJ×Ò˜S $Ñ'Ô'×1Ò1°#°t´{ÑCÔCñDˆ	à×"Ò" 7¨D°)Ñ<Ô<ˆØÐØ×Ò�RœX b§o¢o°gÑ&>Ô&>Ñ?Ô?Ñ@Ô@Ð@Ø×Ò˜VÑ$Ô$Ð$Ð$à×Ò˜vÑ&Ô&Ð&Ø
�Š‰Œˆˆˆr)   c           	      ó   — |                      ¦   «         }|�|j        \  }}}}	nd}d}| j        }| j        }	|j        d d…         \  }
}t
          j                             ||
|                     ¦   «         ¦  «        }| 	                    ¦   «          |j
                             |t          |¦  «        t          | j        |z
  ¦  «        t          |¦  «        t          |	 ¦  «        ¦  «         |                     ¦   «          d S )Nr   r˜   )r™   rš   ru   rw   Úshaper   ÚBitmapÚFromBufferRGBAÚtobytesrµ   r†   Ú
DrawBitmapÚintr½   )r;   r{   ÚxÚyÚimÚbboxÚlÚbr�   r�   ÚrowsÚcolsrx   s                r'   Ú
draw_imagezRendererWx.draw_imageß   sÛ   € Ø×$Ò$Ñ&Ô&ˆØÐØœ‰JˆAˆq�!�Q�QàˆAØˆAØ”
ˆAØ”ˆAØ”X˜b˜q˜b”\‰
ˆˆdÝ”×)Ò)¨$°°b·j²j±l´lÑCÔCˆØ
�	Š	‰ŒˆØ
Œ
×Ò˜f¥c¨!¡f¤f­c°$´+À±/Ñ.BÔ.BÝ! !™fœf¥c¨1¨"¡g¤gñ	/ô 	/ð 	/à
�Š‰Œˆˆˆr)   Fc	                 ó$  — |rt          j        |¦  «        }t                               dt	          | ¦  «        ¦  «         |                     ¦   «          |                      |¦  «         |j        }	|                      ||¦  «        }
| 	                    | 
                    ¦   «         ¦  «        }|	                     |
|¦  «         |                      |||¦  «        \  }}}t          |¦  «        }t          ||z
  ¦  «        }|dk    r|	                     |||¦  «         n`t          j        |¦  «        }|t          j        |¦  «        z  }|t          j        |¦  «        z  }|	                     |||z
  ||z
  |¦  «         |                     ¦   «          d S )Nz%s - draw_text()r´   )r   r„   rq   rr   rs   rµ   rŸ   r†   r‡   rº   Úget_rgbrˆ   r“   rÆ   ÚDrawTextÚmathÚradiansÚsinÚcosÚDrawRotatedTextr½   )r;   r{   rÇ   rÈ   r‹   rŒ   Úangler�   Úmtextr†   rŽ   Úcolorr�   r�   ÚdÚradsÚxoÚyos                     r'   Ú	draw_textzRendererWx.draw_textï   sb  € ð ð 	$ÝÔ  Ñ#Ô#ˆAÝ�
Š
Ð%¥t¨D¡z¤zÑ2Ô2Ð2Ø
�	Š	‰ŒˆØ×"Ò" 2Ñ&Ô&Ð&Ø”*ˆà×Ò  4Ñ(Ô(ˆØ—’ §
¢
¡¤Ñ-Ô-ˆØ�Š˜˜eÑ$Ô$Ð$à×4Ò4°Q¸¸fÑEÔE‰ˆˆ1ˆaÝ�‰FŒFˆÝ��A‘‰JŒJˆà�CŠ<ˆ<Ø×Ò˜Q  1Ñ%Ô%Ð%Ð%å”< Ñ&Ô&ˆDØ•T”X˜d‘^”^Ñ#ˆBØ•T”X˜d‘^”^Ñ#ˆBØ×#Ò# A q¨2¡v¨q°2©v°tÑ<Ô<Ð<à
�Š‰Œˆˆˆr)   c                 óø   — t                                dt          | ¦  «        ¦  «         t          | j        | ¦  «        | _        | j                             ¦   «          | j                             ¦   «          | j        S )Nz%s - new_gc())rq   rr   rs   ÚGraphicsContextWxrx   r{   rµ   r½   rC   s    r'   r…   zRendererWx.new_gc  s\   € å�
Š
�?¥D¨¡J¤JÑ/Ô/Ð/Ý# D¤K°Ñ6Ô6ˆŒØŒ�ŠÑÔÐØŒ×ÒÑÔÐØŒwˆr)   c                 ó:  — t                                dt          | ¦  «        ¦  «         t          |¦  «        }| j                             |¦  «        }|�|S |                      |                     ¦   «         ¦  «        }t          j	        t          |¦  «        | j                             |                     ¦   «         t          j        ¦  «        | j        |                     ¦   «                  | j        |                     ¦   «                  ¬¦  «        x| j        |<   }|S )z7Return a wx font.  Cache font instances for efficiency.z%s - get_wx_font()N)Ú	pointSizeÚfamilyr   Úweight)rq   rr   rs   Úhashry   ÚgetÚpoints_to_pixelsÚget_size_in_pointsr   ÚFontÚroundÚ	fontnamesÚget_nameÚROMANÚ
fontanglesÚ	get_styleÚfontweightsÚ
get_weight)r;   r‹   rŒ   ÚkeyrŽ   Úsizes         r'   r‡   zRendererWx.get_wx_font  sâ   € å�
Š
Ð'­¨d©¬Ñ4Ô4Ð4Ý�4‰jŒjˆØŒz�~Š~˜cÑ"Ô"ˆØÐØˆKØ×$Ò$ T×%<Ò%<Ñ%>Ô%>Ñ?Ô?ˆõ "$¤Ý˜D‘k”kØ”>×%Ò% d§m¢m¡o¤oµr´xÑ@Ô@Ø”/ $§.¢.Ñ"2Ô"2Ô3ØÔ# D§O¢OÑ$5Ô$5Ô6ð	"8ñ "8ô "8ð 	8ˆŒ
�3‰˜$ð
 ˆr)   c                 ó2   — |t           dz  | j        z  dz  z  S )Ng      R@)ÚPIXELS_PER_INCHrz   )r;   r°   s     r'   rè   zRendererWx.points_to_pixels$  s   € à�¨4Ñ/°$´(Ñ:¸TÑAÑBÐBr)   r4   )FN)$rK   rL   rM   rN   r   ÚFONTWEIGHT_LIGHTÚFONTWEIGHT_NORMALÚFONTWEIGHT_BOLDrñ   ÚFONTSTYLE_ITALICÚFONTSTYLE_NORMALÚFONTSTYLE_SLANTrï   ÚFONTFAMILY_SWISSÚFONTFAMILY_ROMANÚFONTFAMILY_SCRIPTÚFONTFAMILY_DECORATIVEÚFONTFAMILY_MODERNrì   r:   r   r   Ú
deprecatedr‚   r“   r•   rŸ   Ústaticmethodr²   r¿   rÏ   rß   r…   r‡   rè   rO   rP   s   @r'   rY   rY   R   sš  ø€ € € € € ð
ð ðØˆRÔ ðàˆRÔ ðð 	ˆRÔ ðð 	ˆRÔ!ð	ð
 	ˆRÔ!ðð 	ˆRÔ!ðð 	ˆRÔðð 	ˆRÔðð 	ˆRÔðð 	�bÔ)ðð 	�Ô$ðð 	�"Ô&ðð 	�"Ô&ðð 	�BÔ(ðð 	�Ô"ðð  	�Ô#ð!ð" 	�RÔ'ð#ð$ 	�Ô#ð%ð €Kð* Ô%ØÔ%ØÔ%ðð €Jð Ô#ØÔ$ØÔ&ØÔ.ØÔ&ØÔ'ØÔ'ðð €Ið	ð 	ð 	ð 	ð 	ðð ð ð €T„_�UÑÔðð ñ Ôððð ð ð"'ð 'ð 'ð;ð ;ð ;ð ðð ñ „\ððð ð ð ðð ð ð ð ð ð ð8ð ð ðð ð ð"Cð Cð Cð Cð Cð Cð Cr)   rY   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                               dt	          | ¦  «        |¦  «         | j                             |d¦  «        \  }}|€Ft          j        |¦  «        }t          j	         
                    |¦  «        }d |_        ||f| j        |<   || _        || _        || _        t          j        ddt          j        ¦  «        | _        |                     | j        ¦  «         || _        d S )Nz%s - __init__(): %s)NNr‰   r*   )r9   r:   rq   rr   rs   Ú_cacherç   r   ÚMemoryDCÚGraphicsContextÚCreater›   rx   Údcr†   ÚPenÚSOLIDÚ_penÚSetPenÚrenderer)r;   rx   r  r  r†   r>   s        €r'   r:   zGraphicsContextWx.__init__A  sÜ   ø€ Ý‰Œ×ÒÑÔÐå�
Š
Ð(­$¨t©*¬*°fÑ=Ô=Ð=à”k—o’o f¨lÑ;Ô;‰ˆˆGØˆ:Ý”˜VÑ$Ô$ˆBÝÔ(×/Ò/°Ñ3Ô3ˆGØ$(ˆGÔ!Ø"$ g +ˆDŒK˜ÑàˆŒØˆŒØˆŒÝ”F˜7 A¥r¤xÑ0Ô0ˆŒ	Ø�Š�t”yÑ!Ô!Ð!Ø ˆŒˆˆr)   c                 óv   — t           j        dk    r(| j                             | j        ¦  «         d| _        dS dS )z2Select the current bitmap into this wxDC instance.Úwin32TN)ÚsysÚplatformr  ÚSelectObjectrx   Ú
IsSelectedrC   s    r'   rµ   zGraphicsContextWx.selectT  s:   € åŒ<˜7Ò"Ð"ØŒG× Ò  ¤Ñ-Ô-Ð-Ø"ˆDŒOˆOˆOð #Ð"r)   c                 ó€   — t           j        dk    r-| j                             t          j        ¦  «         d| _        dS dS )z-Select a Null bitmap into this wxDC instance.r  FN)r  r  r  r  r   Ú
NullBitmapr  rC   s    r'   r½   zGraphicsContextWx.unselectZ  s:   € åŒ<˜7Ò"Ð"ØŒG× Ò ¥¤Ñ/Ô/Ð/Ø#ˆDŒOˆOˆOð #Ð"r)   Nc                 ó¨  •— t                                dt          | ¦  «        ¦  «         |                      ¦   «          t	          ¦   «                              ||¦  «         | j                             |                      |  	                    ¦   «         ¦  «        ¦  «         | j
                             | j        ¦  «         |                      ¦   «          d S )Nz%s - set_foreground())rq   rr   rs   rµ   r9   Úset_foregroundr  Ú	SetColourrº   rÑ   r†   r  r½   )r;   ÚfgÚisRGBAr>   s      €r'   r  z GraphicsContextWx.set_foreground`  sœ   ø€ õ 	�
Š
Ð*­D°©J¬JÑ7Ô7Ð7Ø�Š‰ŒˆÝ‰Œ×Ò˜r 6Ñ*Ô*Ð*àŒ	×Ò˜D×-Ò-¨d¯lªl©n¬nÑ=Ô=Ñ>Ô>Ð>ØŒ×Ò˜DœIÑ&Ô&Ð&Ø�Š‰Œˆˆˆr)   c                 ó  •— t          |¦  «        }t                               dt          | ¦  «        ¦  «         |                      ¦   «          d|cxk     rdk     rn nd}t          ¦   «                              |¦  «         t          | j         	                    | j
        ¦  «        ¦  «        }|dk    rd}| j                             |¦  «         | j                             | j        ¦  «         |                      ¦   «          d S )Nz%s - set_linewidth()r   r*   )Úfloatrq   rr   rs   rµ   r9   Úset_linewidthrÆ   r  rè   Ú
_linewidthr  ÚSetWidthr†   r  r½   )r;   r�   Úlwr>   s      €r'   r#  zGraphicsContextWx.set_linewidtho  sØ   ø€ å�!‰HŒHˆÝ�
Š
Ð)­4°©:¬:Ñ6Ô6Ð6Ø�Š‰ŒˆØˆqˆ9ˆ9Š9ˆ9�1Š9ˆ9ˆ9ˆ9ˆ9ØˆAÝ‰Œ×Ò˜aÑ Ô Ð Ý�”×/Ò/°´Ñ@Ô@ÑAÔAˆØ�Š7ˆ7ØˆBØŒ	×Ò˜2ÑÔÐØŒ×Ò˜DœIÑ&Ô&Ð&Ø�Š‰Œˆˆˆr)   c                 ó†  •— t                                dt          | ¦  «        ¦  «         |                      ¦   «          t	          ¦   «                              |¦  «         | j                             t          j	        | j
                 ¦  «         | j                             | j        ¦  «         |                      ¦   «          d S )Nz%s - set_capstyle())rq   rr   rs   rµ   r9   Úset_capstyler  ÚSetCaprá   Ú_capdÚ	_capstyler†   r  r½   )r;   Úcsr>   s     €r'   r(  zGraphicsContextWx.set_capstyle~  s�   ø€ å�
Š
Ð(­$¨t©*¬*Ñ5Ô5Ð5Ø�Š‰ŒˆÝ‰Œ×Ò˜RÑ Ô Ð ØŒ	×ÒÕ*Ô0°´Ô@ÑAÔAÐAØŒ×Ò˜DœIÑ&Ô&Ð&Ø�Š‰Œˆˆˆr)   c                 ó†  •— t                                dt          | ¦  «        ¦  «         |                      ¦   «          t	          ¦   «                              |¦  «         | j                             t          j	        | j
                 ¦  «         | j                             | j        ¦  «         |                      ¦   «          d S )Nz%s - set_joinstyle())rq   rr   rs   rµ   r9   Úset_joinstyler  ÚSetJoinrá   Ú_joindÚ
_joinstyler†   r  r½   )r;   Újsr>   s     €r'   r.  zGraphicsContextWx.set_joinstyle‡  s�   ø€ å�
Š
Ð)­4°©:¬:Ñ6Ô6Ð6Ø�Š‰ŒˆÝ‰Œ×Ò˜bÑ!Ô!Ð!ØŒ	×ÒÕ+Ô2°4´?ÔCÑDÔDÐDØŒ×Ò˜DœIÑ&Ô&Ð&Ø�Š‰Œˆˆˆr)   c                 ó‚   — t                                dt          | ¦  «        ¦  «         t          j        d„ |D ¦   «         Ž S )z'Convert an RGB(A) color to a wx.Colour.z%s - get_wx_color()c                 ó2   — g | ]}t          d |z  ¦  «        ‘ŒS )éÿ   )rÆ   )Ú.0rÇ   s     r'   ú
<listcomp>z2GraphicsContextWx.get_wxcolour.<locals>.<listcomp>“  s"   € Ð7Ð7Ð7¨A�3˜s Q™w™<œ<Ð7Ð7Ð7r)   )rq   rr   rs   r   ÚColour)r;   rÚ   s     r'   rº   zGraphicsContextWx.get_wxcolour�  s9   € å�
Š
Ð(­$¨t©*¬*Ñ5Ô5Ð5ÝŒyÐ7Ð7°Ð7Ñ7Ô7Ð8Ð8r)   r4   )rK   rL   rM   rN   r   ÚCAP_BUTTÚCAP_PROJECTINGÚ	CAP_ROUNDr*  Ú
JOIN_BEVELÚ
JOIN_MITERÚ
JOIN_ROUNDr0  ÚweakrefÚWeakKeyDictionaryr
  r:   rµ   r½   r  r#  r(  r.  rº   rO   rP   s   @r'   rá   rá   )  s%  ø€ € € € € ðð ð ”[ØÔ,Ø”lð$ð $€Eð ”}Ø”}Ø”}ð&ð &€Fð 'ˆWÔ&Ñ(Ô(€Fð!ð !ð !ð !ð !ð&#ð #ð #ð$ð $ð $ðð ð ð ð ð ðð ð ð ð ðð ð ð ð ðð ð ð ð ð9ð 9ð 9ð 9ð 9ð 9ð 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
j        d“e
j        d“e
j        d“e
j        d“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
j)        d"“e
j*        d#“e
j+        d$“e
j,        d%“¥i e
j-        d&“e
j.        d'“e
j/        d(“e
j0        d)“e
j1        d*“e
j2        d+“e
j3        d,“e
j4        d-“e
j5        d.“e
j6        d/“e
j7        d0“e
j8        d1“e
j9        d“e
j:        d	“e
j;        d
“e
j<        d“e
j=        d“¥e
j>        d!e
j?        d"e
j@        de
jA        d e
jB        de
jC        di¥ZDdUd3„ZEdUd4„ZFd5„ ZGd6„ ZHdVd8„ZIdUd9„ZJd:„ ZKdUd;„ZLi eMjN        ¥d<d=d=d>d?d@d@dAdBœ¥ZNˆ fdC„ZOdD„ ZPdE„ ZQeRdUd2dFœdG„¦   «         ZSdH„ ZTdUdI„ZUdJ„ ZVdK„ ZWdL„ ZXdWdN„ZYdO„ ZZdP„ Z[dQ„ Z\dR„ Z]dS„ Z^dT„ Z_ˆ xZ`S )XÚ_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 r4   )Ú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	                             | ||t          j
        ||¦  «        ¬¦  «         t          j        ||¦  «        | _        t                               dt          | ¦  «        ||¦  «         d| _        d| _        t          j        ddt          j        ¦  «        | _        t          j        ddt          j        ¦  «        | _        |                      t          j        | j        ¦  «         |                      t          j        | j        ¦  «         |                      t          j        | j        ¦  «         |                      t          j        | j        ¦  «         |                      t          j         | j!        ¦  «         |                      t          j"        | j!        ¦  «         |                      t          j#        | j!        ¦  «         |                      t          j$        | j!        ¦  «         |                      t          j%        | j!        ¦  «         |                      t          j&        | j!        ¦  «         |                      t          j'        | j!        ¦  «         |                      t          j(        | j!        ¦  «         |                      t          j)        | j!        ¦  «         |                      t          j*        | j!        ¦  «         |                      t          j+        | j!        ¦  «         |                      t          j,        | j!        ¦  «         |                      t          j-        | j!        ¦  «         |                      t          j.        | j!        ¦  «         |                      t          j/        | j!        ¦  «         |                      t          j0        | j1        ¦  «         |                      t          j2        | j3        ¦  «         |                      t          j4        | j5        ¦  «         |                      t          j6        | j7        ¦  «         |                      t          j8        | j9        ¦  «         |                      t          j:        | j9        ¦  «         |  ;                    t          j<        ¦  «         |  =                    t          j>        ¦  «         dS )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:%dFNr‰   r*   ÚWHITE)?r   r:   ÚmaprÓ   ÚceilÚfigurerÊ   rô   r   ÚPanelÚSizerÂ   rx   rq   rr   rs   Ú_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ÚSetBackgroundColourrw  )r;   r   Úidrz  r�   r�   s         r'   r:   z_FigureCanvasWxBase.__init__à  s  € õ 	Ô! $¨Ñ/Ô/Ð/Ý•4”9˜dœkÔ.Ô3Ñ4Ô4‰ˆˆ1å
Œ×Ò˜$ ¨µ´¸¸A±´ÐÑ?Ô?Ð?å”i  1‘o”oˆŒÝ�
Š
Ð7½¸d¹¼ÀQÈÑJÔJÐJØˆŒØ $ˆÔÝ%'¤V¨G°Q½Ô8NÑ%OÔ%OˆÔ"Ý%'¤V¨G°Q½Ô8IÑ%JÔ%JˆÔ"à�	Š	•"”+˜tœ}Ñ-Ô-Ð-Ø�	Š	•"”, ¤Ñ/Ô/Ð/Ø�	Š	•"Ô" DÔ$5Ñ6Ô6Ð6Ø�	Š	•"”- ¤Ñ1Ô1Ð1Ø�	Š	•"Ô" DÔ$9Ñ:Ô:Ð:Ø�	Š	•"Ô$ dÔ&;Ñ<Ô<Ð<Ø�	Š	•"”. $Ô"7Ñ8Ô8Ð8Ø�	Š	•"Ô$ dÔ&;Ñ<Ô<Ð<Ø�	Š	•"Ô&¨Ô(=Ñ>Ô>Ð>Ø�	Š	•"Ô" DÔ$9Ñ:Ô:Ð:Ø�	Š	•"Ô# TÔ%:Ñ;Ô;Ð;Ø�	Š	•"Ô% tÔ'<Ñ=Ô=Ð=Ø�	Š	•"”/ 4Ô#8Ñ9Ô9Ð9Ø�	Š	•"Ô(¨$Ô*?Ñ@Ô@Ð@Ø�	Š	•"Ô&¨Ô(=Ñ>Ô>Ð>Ø�	Š	•"Ô(¨$Ô*?Ñ@Ô@Ð@Ø�	Š	•"Ô&¨Ô(=Ñ>Ô>Ð>Ø�	Š	•"Ô*¨DÔ,AÑBÔBÐBØ�	Š	•"Ô*¨DÔ,AÑBÔBÐBØ�	Š	•"Ô# TÔ%9Ñ:Ô:Ð:Ø�	Š	•"”- ¤Ñ1Ô1Ð1Ø�	Š	•"Ô% t¤~Ñ6Ô6Ð6Ø�	Š	•"Ô% t¤~Ñ6Ô6Ð6à�	Š	•"Ô.°Ô0EÑFÔFÐFØ�	Š	•"Ô+¨TÔ-BÑCÔCÐCà×Ò¥Ô 1Ñ2Ô2Ð2Ø× Ò ¥¤Ñ*Ô*Ð*Ð*Ð*r)   c                 óš  — t          j        ¦   «         }|                     | j        ¦  «         t           j                             ¦   «         s}t           j                             ¦   «         }|r_t           j                             |¦  «         t           j                             ¦   «          t           j         	                    ¦   «          dS dS dS )z*Copy bitmap of canvas to system clipboard.N)
r   ÚBitmapDataObjectÚ	SetBitmaprx   ÚTheClipboardÚIsOpenedÚOpenÚSetDataÚCloseÚFlush)r;   ÚeventÚbmp_objÚopen_successs       r'   ÚCopy_to_Clipboardz%_FigureCanvasWxBase.Copy_to_Clipboard  s¯   € åÔ%Ñ'Ô'ˆØ×Ò˜$œ+Ñ&Ô&Ð&åŒ×'Ò'Ñ)Ô)ð 	(Ýœ?×/Ò/Ñ1Ô1ˆLØð (Ý”×'Ò'¨Ñ0Ô0Ð0Ý”×%Ò%Ñ'Ô'Ð'Ý”×%Ò%Ñ'Ô'Ð'Ð'Ð'ð	(ð 	(ð(ð (r)   c                 ó�   — t                                dt          | ¦  «        ¦  «         d| _        |                      d¬¦  «         d S )Nz%s - draw_idle()F©ÚeraseBackground)rq   rr   rs   r}  ÚRefreshrC   s    r'   Ú	draw_idlez_FigureCanvasWxBase.draw_idle  s@   € å�
Š
Ð%¥t¨D¡z¤zÑ2Ô2Ð2ØˆŒð 	�Š UˆÑ+Ô+Ð+Ð+Ð+r)   c                 ó,   — t          j        ¦   «          d S r4   )r   ÚYieldrC   s    r'   Úflush_eventsz _FigureCanvasWxBase.flush_events(  s   € å
Œ‰
Œ
ˆ
ˆ
ˆ
r)   r   c                 óÚ  — t          | d¦  «        rt          d¦  «        ‚t          j        | t          j        ¬¦  «        }|dk    r`|                     t          |dz  ¦  «        d¬¦  «         |                      t          j        | j	        | 
                    ¦   «         ¬¦  «         t          j        ¦   «         | _        | j                             ¦   «          |                     ¦   «          d S )NÚ_event_loopzEvent loop already running©rª  r   iè  T)ÚoneShot)ÚhasattrÚRuntimeErrorr   r5   ÚID_ANYr@   rÆ   rƒ  Ú	EVT_TIMERÚstop_event_loopÚGetIdÚGUIEventLooprÁ  ÚRunrF   )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 DÔ$8¸U¿[º[¹]¼]ˆIÑKÔKÐKåœ?Ñ,Ô,ˆÔØÔ×ÒÑÔÐØ�
Š
‰Œˆˆˆr)   c                 ó’   — t          | d¦  «        r6| j                             ¦   «         r| j                             ¦   «          | `d S d S )NrÁ  )rÄ  rÁ  rI   ÚExit©r;   r´  s     r'   rÈ  z#_FigureCanvasWxBase.stop_event_loop9  sV   € å�4˜Ñ'Ô'ð 	!ØÔ×)Ò)Ñ+Ô+ð (ØÔ ×%Ò%Ñ'Ô'Ð'ØÐ Ð Ð ð	!ð 	!r)   c                 óÂ  — |                       ¦   «         }|                      ¦   «         }t          |                     ¦   «         ¦  «        }g }g }d}t	          |¦  «        D ]g\  }\  }}	d                     d„ |	D ¦   «         ¦  «        }
|                     |	d         ¦  «         |›d|
›d|
›�}||	v r|}|                     |¦  «         Œhd                     |¦  «        }|||fS )z3Return the wildcard string for the filesave dialog.r   ú;c                 ó   — g | ]}d |z  ‘ŒS )z*.%sr~   )r6  Úexts     r'   r7  z@_FigureCanvasWxBase._get_imagesave_wildcards.<locals>.<listcomp>I  s   € Ð >Ð >Ð >°# ¨#¡Ð >Ð >Ð >r)   z (z)|ú|)Úget_default_filetypeÚget_supported_filetypes_groupedÚsortedÚitemsÚ	enumerateÚjoinÚappend)r;   Údefault_filetypeÚ	filetypesÚsorted_filetypesÚ	wildcardsÚ
extensionsÚfilter_indexÚirS   ÚextsÚext_listÚwildcards               r'   Ú_get_imagesave_wildcardsz,_FigureCanvasWxBase._get_imagesave_wildcards@  sÿ   € à×4Ò4Ñ6Ô6ÐØ×8Ò8Ñ:Ô:ˆ	Ý! )§/¢/Ñ"3Ô"3Ñ4Ô4ÐØˆ	Øˆ
ØˆÝ(Ð)9Ñ:Ô:ð 	'ð 	'‰OˆA‰|��dØ—x’xÐ >Ð >¸Ð >Ñ >Ô >Ñ?Ô?ˆHØ×Ò˜d 1œgÑ&Ô&Ð&Ø'+ t t¨X¨X¨X°x°xÐ@ˆHØ 4Ð'Ð'Ø �Ø×Ò˜XÑ&Ô&Ð&Ð&Ø—H’H˜YÑ'Ô'ˆ	Ø˜* lÐ2Ð2r)   c                 ó®  — t                                dt          | ¦  «        ¦  «         | r|                      ¦   «         sdS |st	          j        | ¦  «        }t          j        dk    r\t          | j        j	         
                    ¦   «         t          ¦  «        r+| j                             ¦   «                              ¦   «         n| j        }|                     |dd¦  «         | j        �mt#          t$          | j        ¦  «        \  }}}}||||f||||f||||f||||fg}|                     || j        ¦  «         |                     || j        ¦  «         dS dS )z«
        Update the displayed image on the GUI canvas, using the supplied
        wx.PaintDC device context.

        The 'WXAgg' backend sets origin accordingly.
        z%s - gui_repaint()NÚ	__WXMSW__r   )rq   rr   rs   ÚIsShownOnScreenr   ÚClientDCÚPlatformÚ
isinstancerz  ÚcanvasÚget_rendererrY   rx   ÚConvertToImageÚConvertToBitmaprÅ   r~  rx  rë   ÚDrawLineListr‚  r€  )r;   ÚdrawDCÚbmpÚx0Úy0Úx1Úy1Úrects           r'   Úgui_repaintz_FigureCanvasWxBase.gui_repaintR  sj  € õ 	�
Š
Ð'­¨d©¬Ñ4Ô4Ð4ð ð 	˜×-Ò-Ñ/Ô/ð 	ØˆFØð 	'Ý”[ Ñ&Ô&ˆFõ ”+ Ò,Ð,Ý  ¤Ô!3×!@Ò!@Ñ!BÔ!BÅJÑOÔOð -ð Œ{×)Ò)Ñ+Ô+×;Ò;Ñ=Ô=Ð=ð ”Kð 	ð 	×Ò˜#˜q !Ñ$Ô$Ð$ØÔ Ð,å ¥¨Ô(=Ñ>Ô>‰NˆB��B˜Ø˜˜R Ð$ r¨2¨r°2Ð&6Ø˜˜R Ð$ r¨2¨r°2Ð&6ð8ˆDà×Ò  dÔ&@ÑAÔAÐAØ×Ò  dÔ&@ÑAÔAÐAÐAÐ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        |g|¢R i |¤Ž | j        r|                      ¦   «          d S d S r4   )r9   Úprint_figurer}  Údraw)r;   Úfilenamer<   r=   r>   s       €r'   r  z _FigureCanvasWxBase.print_figure{  sQ   ø€ à�‰ŒÔ˜XÐ7¨Ð7Ð7Ð7°Ð7Ð7Ð7ð Œ=ð 	Ø�IŠI‰KŒKˆKˆKˆKð	ð 	r)   c                 ó  — t                                dt          | ¦  «        ¦  «         t          j        | ¦  «        }| j        s|                      |¬¦  «         n|                      |¬¦  «         |                     ¦   «          dS )z$Called when wxPaintEvt is generated.z%s - _on_paint()©rô  N)	rq   rr   rs   r   ÚPaintDCr}  r  rû  r$   )r;   r´  rô  s      r'   r‡  z_FigureCanvasWxBase._on_paint„  sz   € å�
Š
Ð%¥t¨D¡z¤zÑ2Ô2Ð2Ý”˜DÑ!Ô!ˆØŒ}ð 	,Ø�IŠI˜VˆIÑ$Ô$Ð$Ð$à×Ò FÐÑ+Ô+Ð+Ø�ŠÑÔÐÐÐr)   c                 ó®  — t                                dt          | ¦  «        ¦  «         |                      ¦   «                              ¦   «         }|r|                     | ¦  «        }|r2|r0|j        s)|j        t          j	        z  s|  
                    ¦   «         }n;|                      ¦   «         }|                     |  
                    ¦   «         ¦  «         t          | dd¦  «        r|| j        | j        fk    rdS |\  | _        | _        d| _        | j        dk    s| j        dk    rdS t          j        | j        | j        ¦  «        | _        | j        j        }| j        |z  }| j        |z  }| j                             ||d¬¦  «         |                      d¬¦  «         t/          d| ¦  «                             ¦   «          |                      ¦   «          dS )	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)rq   rr   rs   Ú	GetParentÚGetSizerÚGetItemÚ
ProportionÚFlagr   ÚEXPANDÚ
GetMinSizeÚGetClientSizeÚIncToÚgetattrr  Ú_heightr}  rÂ   rx   rz  rz   Úset_size_inchesr»  r   Ú_processr¼  )r;   r´  ÚszÚsirô   ÚdpivalÚwinchÚhinchs           r'   r…  z_FigureCanvasWxBase._on_sizeŽ  sº  € õ 	�
Š
Ð$¥d¨4¡j¤jÑ1Ô1Ð1Ø�^Š^ÑÔ×&Ò&Ñ(Ô(ˆØð 	"Ø—’˜DÑ!Ô!ˆBØð 	*�"ð 	*˜Rœ]ð 	*°2´7½R¼YÑ3Fð 	*à—?’?Ñ$Ô$ˆDˆDð ×%Ò%Ñ'Ô'ˆDà�JŠJ�t—’Ñ(Ô(Ñ)Ô)Ð)Ý�4˜ 4Ñ(Ô(ð 	Ø˜œ T¤\Ð2Ò2Ð2à�Ø$(Ñ!ˆŒ�T”\ØˆŒàŒ;˜!ÒÐ˜tœ|¨qÒ0Ð0ØˆFõ ”i ¤¨T¬\Ñ:Ô:ˆŒà””ˆØ”˜fÑ$ˆØ”˜vÑ%ˆØŒ×#Ò# E¨5¸%Ð#Ñ@Ô@Ð@ð
 	�Š UˆÑ+Ô+Ð+Ý�N DÑ)Ô)×2Ò2Ñ4Ô4Ð4Ø�ŠÑÔÐÐÐr)   ©Úexcludec                óü   ‡‡— dt           j        t           j        fdt           j        t           j        fdt           j        t           j        fg}| �#|                      ¦   «         Šˆˆfd„|D ¦   «         S d„ |D ¦   «         S )NÚctrlrI  rH  c                 ó2   •— g | ]\  }}}‰|z  r‰|k    ¯|‘ŒS r~   r~   )r6  rS   Úmodró   r#  Ú	modifierss       €€r'   r7  z6_FigureCanvasWxBase._mpl_modifiers.<locals>.<listcomp>Ä  s;   ø€ ð ;ð ;ð ;™^˜T 3¨Ø  3‘ð;Ø+2°cª>¨>ð Ø+9¨>¨>r)   c                 óB   — g | ]\  }}}t          j        |¦  «        ¯|‘ŒS r~   )r   ÚGetKeyState)r6  rS   r'  ró   s       r'   r7  z6_FigureCanvasWxBase._mpl_modifiers.<locals>.<listcomp>Ç  s<   € ð ,ð ,ð ,™^˜T 3¨Ý”~ cÑ*Ô*ð,�Dð ,ð ,ð ,r)   )r   ÚMOD_CONTROLÚWXK_CONTROLÚMOD_ALTÚWXK_ALTÚ	MOD_SHIFTÚ	WXK_SHIFTÚGetModifiers)r´  r#  Ú	mod_tabler(  s    ` @r'   Ú_mpl_modifiersz"_FigureCanvasWxBase._mpl_modifiers»  sŸ   øø€ ð •R”^¥R¤^Ð4Ø•B”J¥¤
Ð+Ø•b”l¥B¤LÐ1ð
ˆ	ð
 ÐØ×*Ò*Ñ,Ô,ˆIð;ð ;ð ;ð ;ð ;¨yð ;ñ ;ô ;ð ;ð,ð ,¨yð ,ñ ,ô ,ð ,r)   c                 óx  — |j         }|| j        v r| j        |         }n@|dk     r8t          |¦  «        }|                     ¦   «         s|                     ¦   «         }nd S |                      ||¬¦  «        }d|v r)|                     ¦   «         r|                     d¦  «         d                     g |¢|‘¦  «        S )Né   r"  rH  rp  )	ÚKeyCodeÚkeyvaldÚchrÚ	ShiftDownÚlowerr3  ÚisupperÚremoverÜ  )r;   r´  Úkeyvalró   Úmodss        r'   Ú_get_keyz_FigureCanvasWxBase._get_keyÊ  s¸   € Ø”ˆØ�T”\Ð!Ð!Ø”,˜vÔ&ˆCˆCØ�cŠ\ˆ\Ý�f‘+”+ˆCð —?’?Ñ$Ô$ð "Ø—i’i‘k”k�øà�4Ø×"Ò" 5°&Ð"Ñ9Ô9ˆØ�dˆ?ˆ?˜sŸ{š{™}œ}ˆ?Ø�KŠK˜Ñ Ô Ð Ø�xŠx˜˜$˜ ˜Ñ%Ô%Ð%r)   c                 ó¼   — |€7t          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ÚYrz  rÊ   rw   )r;   ÚposrÇ   rÈ   s       r'   Ú_mpl_coordsz_FigureCanvasWxBase._mpl_coordsÛ  s[   € ð
 ˆ;ÝÔ"Ñ$Ô$ˆCØ×&Ò& s¤u¨c¬eÑ4Ô4‰DˆAˆqˆqà”5˜#œ%ˆqˆAà�$”+Ô"Ô)¨AÑ-Ð-Ð-r)   c                 óÈ   — t          d| |                      |¦  «        g|                      ¦   «         ¢R d|iŽ                     ¦   «          | r|                     ¦   «          dS dS )zCapture key press.Úkey_press_eventÚguiEventN©r   r?  rF  r  ÚSkiprÑ  s     r'   r‰  z _FigureCanvasWxBase._on_key_downè  sw   € åÐ" DØ—’˜uÑ%Ô%ð	!Ø(,×(8Ò(8Ñ(:Ô(:ð	!ð 	!ð 	!àð	!ð 	!ç!)¢¡¤ Øð 	Ø�JŠJ‰LŒLˆLˆLˆLð	ð 	r)   c                 óÈ   — t          d| |                      |¦  «        g|                      ¦   «         ¢R d|iŽ                     ¦   «          | r|                     ¦   «          dS dS )zRelease key.Úkey_release_eventrI  NrJ  rÑ  s     r'   r‹  z_FigureCanvasWxBase._on_key_upð  sw   € åÐ$ dØ—’˜uÑ%Ô%ð	!Ø(,×(8Ò(8Ñ(:Ô(:ð	!ð 	!ð 	!àð	!ð 	!ç!)¢¡¤ Øð 	Ø�JŠJ‰LŒLˆLˆLˆ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|¬¦  «        ¦  «        }|                      |¦  «         |                      ¦   «          d S )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;   rO  s     r'   Ú
set_cursorz_FigureCanvasWxBase.set_cursorø  sš   € å”�4Ô-ÝŒL�"œ.ÝŒL�"œ.ÝŒO�Rœ_ÝÔ!¥2¤?ÝŒL�"œ.ÝÔ%¥rÔ'7ÝÔ#¥RÔ%5ð/
ð ðñ ô ñ ô ˆð 	�Š�vÑÔÐØ�Š‰Œˆˆˆr)   Tc                 ó†   — |                       ¦   «         r|                      ¦   «          |r|                      ¦   «          dS dS )zControl wx mouse capture.N)Ú
HasCaptureÚReleaseMouseÚCaptureMouse)r;   Úcaptures     r'   Ú_set_capturez _FigureCanvasWxBase._set_capture  sP   € à�?Š?ÑÔð 	 Ø×ÒÑÔÐØð 	 Ø×ÒÑÔÐÐÐð	 ð 	 r)   c                 ó0   — |                       d¦  «         dS )zCapture changed or lostFN)rf  rÑ  s     r'   r¥  z$_FigureCanvasWxBase._on_capture_lost  s   € à×Ò˜%Ñ Ô Ð Ð Ð r)   c           
      ó¨  — |                      ¦   «          |                      |                     ¦   «         p|                     ¦   «         ¦  «         |                      |¦  «        \  }}t
          j        t          j        t
          j	        t          j
        t
          j        t          j        t
          j        t          j        t
          j        t          j        i}|                     ¦   «         }|                     ||¦  «        }|                      |¦  «        }|                     ¦   «         r*t)          d| |||||¬¦  «                             ¦   «          dS |                     ¦   «         r+t)          d| |||d||¬¦  «                             ¦   «          dS |                     ¦   «         r*t)          d| |||||¬¦  «                             ¦   «          dS dS )úStart measuring on an axis.Úbutton_press_event©r(  rI  T)Údblclickr(  rI  Úbutton_release_eventN)rK  rf  Ú
ButtonDownÚButtonDClickrF  r   ÚMOUSE_BTN_LEFTr   ÚLEFTÚMOUSE_BTN_MIDDLEÚMIDDLEÚMOUSE_BTN_RIGHTÚRIGHTÚMOUSE_BTN_AUX1ÚBACKÚMOUSE_BTN_AUX2ÚFORWARDÚ	GetButtonrç   r3  r   r  ÚButtonUp)r;   r´  rÇ   rÈ   Ú
button_mapÚbuttonr(  s          r'   r�  z$_FigureCanvasWxBase._on_mouse_button  s«  € à�
Š
‰ŒˆØ×Ò˜%×*Ò*Ñ,Ô,ÐD°×0BÒ0BÑ0DÔ0DÑEÔEÐEØ×Ò Ñ&Ô&‰ˆˆ1åÔ�{Ô/ÝÔ¥Ô!3ÝÔ¥Ô 1ÝÔ�{Ô/ÝÔ�{Ô2ð
ˆ
ð —’Ñ"Ô"ˆØ—’ ¨Ñ/Ô/ˆØ×'Ò'¨Ñ.Ô.ˆ	Ø×ÒÑÔð 		GÝÐ+¨T°1°a¸Ø!*°Uð<ñ <ô <ß<DºH¹J¼J¸J¸J¸JØ×ÒÑ!Ô!ð 	GÝÐ+¨T°1°a¸Ø $°	Ø %ð'ñ 'ô 'ç'/¢x¡z¤z z z zØ�^Š^ÑÔð 	GÝÐ-¨t°Q¸¸6Ø!*°Uð<ñ <ô <ß<DºH¹J¼J¸J¸J¸Jð	Gð 	Gr)   c           
      ó€  — |                       |¦  «        \  }}|j        |j        z  |j        z  }|                     ¦   «          t
          j        dk    r/t          | d¦  «        sd| _        n| j        r	d| _        dS d| _        t          d| ||||  
                    |¦  «        |¬¦  «                             ¦   «          dS )z3Translate mouse wheel events into matplotlib eventsÚ	__WXMAC__Ú_skipwheeleventTFNÚscroll_event)Ústepr(  rI  )rF  ÚLinesPerActionÚWheelRotationÚ
WheelDeltarK  r   rí  rÄ  r€  r   r3  r  )r;   r´  rÇ   rÈ   r‚  s        r'   r�  z#_FigureCanvasWxBase._on_mouse_wheel+  sÈ   € à×Ò Ñ&Ô&‰ˆˆ1àÔ# eÔ&9Ñ9¸EÔ<LÑLˆà�
Š
‰ŒˆåŒ;˜+Ò%Ð%Ý˜4Ð!2Ñ3Ô3ð ,Ø'+�Ô$Ð$ØÔ%ð ,Ø',�Ô$Ø�à'+�Ô$Ý�> 4¨¨A°DØ!×0Ò0°Ñ7Ô7Ø!ð	#ñ 	#ô 	#ç#+¢8¡:¤: : : :r)   c                 óÂ   — |                      ¦   «          t          d| g|                      |¦  «        ¢R |                      |¦  «        |dœŽ                     ¦   «          dS )ri  Úmotion_notify_eventrk  N)rK  r   rF  r3  r  rÑ  s     r'   rŸ  z_FigureCanvasWxBase._on_motion?  sk   € à�
Š
‰ŒˆÝÐ(¨$ð 	#Ø×$Ò$ UÑ+Ô+ð	#ð 	#à!×0Ò0°Ñ7Ô7Ø!ð	#ð 	#ð 	#÷ $,¢8¡:¤: : : :r)   c                 óÀ   — |                      ¦   «          t          d| g|                      |¦  «        ¢R |                      ¦   «         |dœŽ                     ¦   «          dS )zMouse has entered the window.Úfigure_enter_eventrk  N©rK  r   rF  r3  r  rÑ  s     r'   r¡  z_FigureCanvasWxBase._on_enterG  ói   € à�
Š
‰ŒˆÝÐ*¨Dð 	&Ø×'Ò'¨Ñ.Ô.ð	&ð 	&à $× 3Ò 3Ñ 5Ô 5Ø$ð	&ð 	&ð 	&÷ '/¢h¡j¤j j j jr)   c                 óÀ   — |                      ¦   «          t          d| g|                      |¦  «        ¢R |                      ¦   «         |dœŽ                     ¦   «          dS )zMouse has left the window.Úfigure_leave_eventrk  NrŠ  rÑ  s     r'   r£  z_FigureCanvasWxBase._on_leaveO  r‹  r)   r4   )r   ©T)arK   rL   rM   rN   Úrequired_interactive_frameworkr2   Ú
_timer_clsr   ÚclasspropertyÚmanager_classr   r,  r0  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_DELETEr7  r:   r·  r¼  r¿  rÎ  rÈ  rè  rû  r   rß  r  r‡  r…  r  r3  r?  rF  r‰  r‹  r`  rf  r¥  r�  r�  rŸ  r¡  r£  rO   rP   s   @r'   rB  rB  –  s’  ø€ € € € € ðð ð &*Ð"Ø€JØ&�DÔ&Ð'BÐ'BÑCÔ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+ð 1+ð 1+ð 1+ðf
(ð 
(ð 
(ð 
(ð,ð ,ð ,ðð ð ðð ð ð ð!ð !ð !ð !ð3ð 3ð 3ð$Bð Bð Bð Bð:
Ø
Ô
$ð
àØØØØ*Ø)Ø*Øð
ð 
ð 
€Iðð ð ð ð ðð ð ð+ð +ð +ðZ ð,¨dð ,ð ,ð ,ð ,ñ „\ð,ð&ð &ð &ð".ð .ð .ð .ðð ð ðð ð ðð ð ð ð  ð  ð  ð!ð !ð !ðGð Gð Gð4.ð .ð .ð(.ð .ð .ð1ð 1ð 1ð1ð 1ð 1ð 1ð 1ð 1ð 1r)   rB  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dS )ÚFigureCanvasWxNc                 ó  — t                                dt          | ¦  «        ¦  «         t          | j        | j        j        ¦  «        | _        | j                             | j        ¦  «         d| _	        |  
                    |¬¦  «         dS )zŒ
        Render the figure using RendererWx instance renderer, or using a
        previously defined renderer if none is specified.
        z%s - draw()Tr
  N)rq   rr   rs   rY   rx   rz  rz   r  r  r}  rû  )r;   rô  s     r'   r  zFigureCanvasWx.draw[  sq   € õ
 	�
Š
�=¥$ t¡*¤*Ñ-Ô-Ð-Ý" 4¤;°´´Ñ@Ô@ˆŒØŒ×Ò˜œÑ'Ô'Ð'ØˆŒØ×Ò ÐÑ'Ô'Ð'Ð'Ð'r)   c                 ó"  — t          j        t          j        | j        j        j        ¦  «        t          j        | j        j        j        ¦  «        ¦  «        }| j                             t          || j        j
        ¦  «        ¦  «         t          j        |¦  «        r|                     ¦   «         n|}|                     ||¦  «        st          d|› �¦  «        ‚| j        r|                      ¦   «          | r|                      ¦   «          d S d S )NzCould not save figure to )r   rÂ   rÓ   ry  rz  rÊ   ru   rw   r  rY   rz   r   Úis_writable_file_likerñ  ÚSaveFilerÅ  r}  r»  )r;   Úfiletyper  rx   Ú	saved_objs        r'   Ú_print_imagezFigureCanvasWx._print_imagef  sü   € Ý”�4œ9 T¤[Ô%5Ô%;Ñ<Ô<Ýœ9 T¤[Ô%5Ô%<Ñ=Ô=ñ?ô ?ˆàŒ×Ò� F¨D¬K¬OÑ<Ô<Ñ=Ô=Ð=åÔ3°HÑ=Ô=ð!�V×*Ò*Ñ,Ô,Ð,à ð 	ð ×!Ò! (¨HÑ5Ô5ð 	GÝÐE¸8ÐEÐEÑFÔFÐFð
 Œ=ð 	Ø�IŠI‰KŒKˆKð ð 	Ø�LŠL‰NŒNˆNˆNˆNð	ð 	r)   r4   )rK   rL   rM   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_xpmr~   r)   r'   rÊ  rÊ  X  sé   € € € € € ð	(ð 	(ð 	(ð 	(ðð ð ð( (�	Ô'Ø�bÔ(ñ*ô *€Ià4˜YÔ4Ø�bÔ)ñ+ô +ð +€J�à'�	Ô'Ø�bÔ(ñ*ô *€Ià'�	Ô'Ø�bÔ(ñ*ô *€Ià4˜YÔ4Ø�bÔ(ñ*ô *ð *€J�à'�	Ô'Ø�bÔ(ñ*ô *€I€I€Ir)   rÊ  c                   ó  ‡ — e Zd Zddœˆ fd„
Z  ej        dd¬¦  «         ed„ ¦  «        ¦  «        Z  ej        dd¬¦  «         ed	„ ¦  «        ¦  «        Z  ej        dd
¬¦  «         ed„ ¦  «        ¦  «        Z	  ej        dd¬¦  «         ed„ ¦  «        ¦  «        Z
  ej        dd¬¦  «         ed„ ¦  «        ¦  «        Z ej        dd¬¦  «        d„ ¦   «         Z ej        dd¬¦  «        d„ ¦   «         Zd„ Zˆ xZS )ÚFigureFrameWxN©Úcanvas_classc                ó¨  •— t           j        dk    rt           j        }nt          j        dd¦  «        }t	          ¦   «                              d d|¬¦  «         t                               dt          | ¦  «        ¦  «         t          | ¦  «         |� || d|¦  «        | _
        n0t          j        dd¬¦  «         |                      |¦  «        | _
        t          | j
        || ¦  «        }| j
        j        j        }|�|                      |¦  «         t%          t&          j        |j        j        ¦  «        \  }}| j
                             t          j        ||¦  «        ¦  «         | j
                             d	¦  «         | j
                             ¦   «          |                      ¦   «          |                      t           j        | j        ¦  «         d S )
Nrê  é   éÿÿÿÿ)r   rª  rE  rp   r   zvThe canvas_class parameter will become required after the deprecation period starting in Matplotlib %(since)s elapses.)r   )r˜   r˜   )r   rí  ÚDefaultPositionÚPointr9   r:   rq   rr   rs   Ú_set_frame_iconrï  r   Úwarn_deprecatedÚ
get_canvasrD  ÚmanagerÚtoolbarÚ
SetToolBarrx  rÓ   ry  rÊ   rô   ÚSetInitialSizer|  Ú
SetMinSizeÚSetFocusÚFitrƒ  Ú	EVT_CLOSEÚ	_on_close)
r;   ÚnumÚfigrå  rE  rî  rï  r�   r�   r>   s
            €r'   r:   zFigureFrameWx.__init__‰  s•  ø€ õ Œ;˜+Ò%Ð%ÝÔ$ˆCˆCå”(˜2˜rÑ"Ô"ˆCÝ‰Œ×Ò ¨°ÐÑ5Ô5Ð5å�
Š
Ð$¥d¨4¡j¤jÑ1Ô1Ð1Ý˜ÑÔÐð Ð#Ø&˜, t¨R°Ñ5Ô5ˆDŒKˆKåÔ Øð  %ð&ñ &ô &ð &ð Ÿ/š/¨#Ñ.Ô.ˆDŒKõ " $¤+¨s°DÑ9Ô9ˆà”+Ô%Ô-ˆØÐØ�OŠO˜GÑ$Ô$Ð$õ •4”9˜cœhœmÑ,Ô,‰ˆˆ1ØŒ×"Ò"¥2¤7¨1¨a¡=¤=Ñ1Ô1Ð1ØŒ×Ò˜vÑ&Ô&Ð&ØŒ×ÒÑÔÐà�Š‰
Œ
ˆ
à�	Š	•"”, ¤Ñ/Ô/Ð/Ð/Ð/r)   r   zframe.GetSizer())rV   c                 ó*   — |                       ¦   «         S r4   )r  rC   s    r'   rF  zFigureFrameWx.<lambda>²  s   € ˜dŸmšm™oœo€ r)   zframe.canvas.managerc                 ó   — | j         j        S r4   )rï  rî  rC   s    r'   rF  zFigureFrameWx.<lambda>´  s   € ˜dœkÔ1€ r)   zframe.canvas.manager.numc                 ó$   — | j         j        j        S r4   )rï  rî  r÷  rC   s    r'   rF  zFigureFrameWx.<lambda>¶  s   € ˜dœkÔ1Ô5€ r)   zframe.GetToolBar()c                 ó*   — |                       ¦   «         S r4   )Ú
GetToolBarrC   s    r'   rF  zFigureFrameWx.<lambda>¸  s   € ˜dŸošoÑ/Ô/€ r)   z frame.canvas.manager.toolmanagerc                 ó$   — | j         j        j        S r4   )rï  rî  ÚtoolmanagerrC   s    r'   rF  zFigureFrameWx.<lambda>»  s   €  $¤+Ô"5Ô"A€ r)   z&the canvas_class constructor parameterc                 ó$   — t          | d|¦  «        S )Nrè  )rÊ  )r;   rø  s     r'   rí  zFigureFrameWx.get_canvas½  s   € õ ˜d B¨Ñ,Ô,Ð,r)   c                 ój   — t                                dt          | ¦  «        ¦  «         | j        j        S )Nz%s - get_figure_manager())rq   rr   rs   rï  rî  rC   s    r'   Úget_figure_managerz FigureFrameWx.get_figure_managerÂ  s(   € å�
Š
Ð.µ°T±
´
Ñ;Ô;Ð;ØŒ{Ô"Ð"r)   c                 óÒ  — t                                dt          | ¦  «        ¦  «         t          d| j        ¦  «                             ¦   «          | j                             ¦   «          d | j        j        _        t          j
        | j        j        ¦  «         	 | j                             | j        j        j        ¦  «         n# t          $ r Y nw xY w|                     ¦   «          d S )Nz%s - on_close()Úclose_event)rq   rr   rs   r   rï  r  rÈ  rî  Úframer   ÚdestroyÚmpl_disconnectrï  Ú_id_dragÚAttributeErrorrK  rÑ  s     r'   rö  zFigureFrameWx._on_closeÇ  sÌ   € Ý�
Š
Ð$¥d¨4¡j¤jÑ1Ô1Ð1Ý�= $¤+Ñ.Ô.×7Ò7Ñ9Ô9Ð9ØŒ×#Ò#Ñ%Ô%Ð%ð %)ˆŒÔÔ!åŒ�D”KÔ'Ñ(Ô(Ð(ð	ØŒK×&Ò& t¤{Ô':Ô'CÑDÔDÐDÐDøÝð 	ð 	ð 	ØˆDð	øøøð 	�
Š
‰Œˆˆˆs   Â)C Ã
CÃC)rK   rL   rM   r:   r   r  ÚpropertyÚsizerÚfigmgrr÷  rï  rÿ  rí  r  rö  rO   rP   s   @r'   rã  rã  ˆ  sÒ  ø€ € € € € Ø15ð &0ð &0ð &0ð &0ð &0ð &0ð &0ðP CˆOˆDŒO˜EÐ/AÐBÑBÔBØˆÐ-Ð-Ñ.Ô.ñ0ô 0€EàGˆ_ˆTŒ_˜UÐ0FÐGÑGÔGØˆÐ1Ð1Ñ2Ô2ñ4ô 4€Fà
Hˆ/ˆ$Œ/˜%Ð-GÐ
HÑ
HÔ
HØˆÐ5Ð5Ñ6Ô6ñ8ô 8€CàFˆoˆdŒo˜eÐ1EÐFÑFÔFØˆÐ/Ð/Ñ0Ô0ñ2ô 2€Gð?�/�$”/ØÐ=ð?ñ ?ô ?àˆHÐAÐAÑBÔBñDô D€Kð €T„_ØÐCðEñ Eô Eð-ð -ñEô Eð-ð €T„_�UÐ(>Ð?Ñ?Ô?ð#ð #ñ @Ô?ð#ðð ð ð ð ð ð r)   rã  c                   ór   ‡ — 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 )rD  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                                dt          | ¦  «        ¦  «         |x| _        | _        t          ¦   «                              ||¦  «         d S )Nrp   )rq   rr   rs   r  Úwindowr9   r:   )r;   rï  r÷  r  r>   s       €r'   r:   zFigureManagerWx.__init__ç  sL   ø€ Ý�
Š
Ð$¥d¨4¡j¤jÑ1Ô1Ð1Ø#(Ð(ˆŒ
�T”[Ý‰Œ×Ò˜ Ñ%Ô%Ð%Ð%Ð%r)   c                 ó  — t          j        ¦   «         pt          ¦   «         }t          |||¬¦  «        }|j        j        }t          j        ¦   «         r2|j         	                    ¦   «          |j         
                    ¦   «          |S )Nrä  )r   ÚGetAppr0   rã  rï  rî  ÚmplÚis_interactiver  ÚShowr¼  )rE  rå  rz  r÷  r/   r  rî  s          r'   Úcreate_with_canvasz"FigureManagerWx.create_with_canvasì  st   € õ ”	‘”Ð.�}™œˆÝ˜c 6¸ÐEÑEÔEˆØ”-Ô'ˆÝÔÑÔð 	&ØŒM×ÒÑ Ô Ð ØŒM×#Ò#Ñ%Ô%Ð%Øˆr)   c                 óœ   — t           j                             ¦   «         s+t          j        ¦   «         }|�|                     ¦   «          d S d S d S r4   )r   r,   ÚIsMainLoopRunningr  ÚMainLoop)rE  r/   s     r'   Ústart_main_loopzFigureManagerWx.start_main_loop÷  sO   € åŒv×'Ò'Ñ)Ô)ð 	!Ý”I‘K”KˆEØÐ Ø—’Ñ Ô Ð Ð Ð ð	!ð 	!à Ð r)   c                 óÄ   — | j                              ¦   «          | j                             ¦   «          t          j        d         r| j                              ¦   «          d S d S )Nzfigure.raise_window)r  r  rï  r  r  ÚrcParamsÚRaiserC   s    r'   ÚshowzFigureManagerWx.showþ  s\   € àŒ
�ŠÑÔÐØŒ×ÒÑÔÐÝŒ<Ð-Ô.ð 	ØŒJ×ÒÑÔÐÐÐð	ð 	r)   c                 óž   — t                                dt          | ¦  «        ¦  «         | j        }|rt	          j        |j        ¦  «         d S d S )Nz%s - destroy())rq   rr   rs   r  r   Ú	CallAfterr²  )r;   r<   r  s      r'   r  zFigureManagerWx.destroy  sP   € å�
Š
Ð#¥T¨$¡Z¤ZÑ0Ô0Ð0Ø”
ˆØð 	&õ ŒL˜œÑ%Ô%Ð%Ð%Ð%ð	&ð 	&r)   c                 ój   — | j                              | j                              ¦   «          ¦  «         d S r4   )r  ÚShowFullScreenÚIsFullScreenrC   s    r'   Úfull_screen_togglez"FigureManagerWx.full_screen_toggle  s/   € àŒ
×!Ò! d¤j×&=Ò&=Ñ&?Ô&?Ð"?Ñ@Ô@Ð@Ð@Ð@r)   c                 ó4   — | j                              ¦   «         S r4   )r  ÚGetTitlerC   s    r'   Úget_window_titlez FigureManagerWx.get_window_title  s   € àŒ{×#Ò#Ñ%Ô%Ð%r)   c                 ó:   — | j                              |¦  «         d S r4   )r  ÚSetTitle)r;   Útitles     r'   Úset_window_titlez FigureManagerWx.set_window_title  s   € àŒ×Ò˜UÑ#Ô#Ð#Ð#Ð#r)   c           
      óØ   — | j                              | j                              t          j        t          j        |¦  «        t          j        |¦  «        ¦  «        ¦  «        ¦  «         d S r4   )r  ÚSetSizeÚClientToWindowSizer   r|  rÓ   ry  )r;   ru   rw   s      r'   ÚresizezFigureManagerWx.resize  sc   € ð 	Œ×Ò˜DœK×:Ò:½2¼7ÝŒI�eÑÔ�dœi¨Ñ/Ô/ñ<1ô <1ñ 2ô 2ñ 	3ô 	3ð 	3ð 	3ð 	3r)   )rK   rL   rM   rN   r:   Úclassmethodr  r  r  r  r#  r&  r*  r.  rO   rP   s   @r'   rD  rD  Ø  sÕ   ø€ € € € € ðð ð&ð &ð &ð &ð &ð
 ðð ñ „[ðð ð!ð !ñ „[ð!ðð ð ð&ð &ð &ðAð Að Að&ð &ð &ð$ð $ð $ð3ð 3ð 3ð 3ð 3ð 3ð 3r)   rD  c                 ój   — 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_bitmapr4  !  s)   € õ
 Œ9•S�Ô-¨h¸ÑAÔAÑBÔBÑCÔCÐCr)   c                 óú   — t          j        ¦   «         }dD ]O}t          j        t          |¦  «        ¦  «        }|                     ¦   «         s d S |                     |¦  «         ŒP|                      |¦  «         d S )N)zmatplotlib.pngzmatplotlib_large.png)r   Ú
IconBundleÚIconr4  ÚIsOkÚAddIconÚSetIcons)r  ÚbundleÚimageÚicons       r'   rë  rë  )  sw   € ÝŒ]‰_Œ_€FØ;ð ð ˆÝŒw•| EÑ*Ô*Ñ+Ô+ˆØ�yŠy‰{Œ{ð 	ØˆFˆFØ�Š�tÑÔÐÐØ	‡N‚N�6ÑÔÐÐÐr)   c                   óz   ‡ — 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 )ÚNavigationToolbar2WxT©r   c          
      ó^  — t           j                             | |                     ¦   «         d|¬¦  «         dt           j        v r|                      d¦  «         i | _        | j        D ]»\  }}}}|€|                      ¦   «          Œ|  	                    d|  
                    |› d�¦  «        t           j        |||dv rt           j        nt           j        ¬¦  «        j        | j        |<   |                      t           j        t#          | |¦  «        | j        |         ¬¦  «         Œ¼|| _        | j        rS|                      ¦   «          t          j        | t           j        ¬¦  «        | _        |                      | j        ¦  «         |                      ¦   «          t3          j        | |¦  «         d S )	Nrè  r@  ÚwxMac)é   rC  z.png)ÚPanÚZoom)rx   ÚbmpDisabledÚlabelÚ	shortHelpÚkindrÂ  )r   ÚToolBarr:   r  ÚPlatformInfoÚSetToolBitmapSizeÚwx_idsÚ	toolitemsÚAddSeparatorÚAddToolÚ_iconr  Ú
ITEM_CHECKÚITEM_NORMALÚIdrƒ  Ú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__4  s¢  € Ý
Œ
×Ò˜D &×"2Ò"2Ñ"4Ô"4°bÀÐÑFÔFÐFà•b”oÐ%Ð%Ø×"Ò" 8Ñ,Ô,Ð,ØˆŒØ8<¼ð 	,ð 	,Ñ4ˆD�, 
¨HØˆ|Ø×!Ò!Ñ#Ô#Ð#Øà—’ØØŸ:š:¨Ð&9Ð&9Ð&9Ñ:Ô:Ý "¤Ø¨,Ø+/°?Ð+BÐ+B�"œ-˜-Ý!œ~ð ñ 0ô 0ô ð ŒK˜Ñð �IŠI•b”k¥7¨4°Ñ#:Ô#:Øœ TÔ*ð ñ ,ô ,ð ,ð ,ð (ˆÔØÔð 	.Ø×$Ò$Ñ&Ô&Ð&Ý!œ}¨T½¼ÐHÑHÔHˆDÔØ�OŠO˜DÔ,Ñ-Ô-Ð-à�Š‰ŒˆåÔ# D¨&Ñ1Ô1Ð1Ð1Ð1r)   c                 ó.  — t           j                             t          j        d| ¦  «        ¦  «        }t          j        |                     d¦  «        ¦  «        }	 t          j	         
                    ¦   «                              ¦   «         }n±# t          $ r¤ t          j	                             t          j        ¦  «        }t          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k    }Y nw xY w|r�t          j	                             t          j        ¦  «        }|dd	d
…f         dk                         d¬¦  «        }|                     ¦   «         |                     ¦   «         |                     ¦   «         f||d	d
…f<   t          j                             |j        d         |j        d         |                     ¦   «         ¦  «        S )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.
        r1  ÚRGBAg‰A`åÐ"Ó?gbX9´Èâ?gÉv¾Ÿ/½?r5  gš™™™™™É?.Nr—   r   rè  )Úaxisr*   )ÚPILÚImageÚopenr   r3  ÚnpÚarrayÚconvertr   ÚSystemSettingsÚGetAppearanceÚIsDarkr	  Ú	GetColourÚSYS_COLOUR_WINDOWÚSYS_COLOUR_WINDOWTEXTÚredÚgreenÚblueÚallÚRedÚGreenÚBluerÂ   rÃ   rÁ   rÄ   )	rS   Úpilimgr<  ÚdarkÚbgr  Úbg_lumÚfg_lumÚ
black_masks	            r'   rQ  zNavigationToolbar2Wx._iconT  sÂ  € õ ”—’¥Ô 4°X¸tÑ DÔ DÑEÔEˆå”˜Ÿš¨Ñ/Ô/Ñ0Ô0ˆð		(ÝÔ$×2Ò2Ñ4Ô4×;Ò;Ñ=Ô=ˆDˆDøÝð 	(ð 	(ð 	(åÔ"×,Ò,­RÔ-AÑBÔBˆBÝÔ"×,Ò,­RÔ-EÑFÔFˆBà˜RœV‘m d¨R¬X¡oÑ5¸¸r¼w¹ÑFÈ#ÑMˆFØ˜RœV‘m d¨R¬X¡oÑ5¸¸r¼w¹ÑFÈ#ÑMˆFØ˜F‘? RÒ'ˆDˆDˆDð	(øøøð ð 	FÝÔ"×,Ò,­RÔ-EÑFÔFˆBØ  R a R œ.¨AÒ-×2Ò2¸Ð2Ñ;Ô;ˆJØ%'§V¢V¡X¤X¨r¯xªx©z¬z¸2¿7º7¹9¼9Ð$EˆE�*˜b˜q˜b�.Ñ!ÝŒy×'Ò'ØŒK˜ŒN˜EœK¨œN¨E¯MªM©O¬Oñ=ô =ð 	=s   Á0B ÂB+D:Ä9D:c                 óê   — d| j         v r/|                      | j         d         | j        j        dk    ¦  «         d| j         v r1|                      | j         d         | j        j        dk    ¦  «         d S d S )NrD  ÚPANrE  ÚZOOM)rM  Ú
ToggleToolÚmoderS   rC   s    r'   Ú_update_buttons_checkedz,NavigationToolbar2Wx._update_buttons_checkedo  sr   € Ø�D”KÐÐØ�OŠO˜DœK¨Ô.°´	´À%Ò0GÑHÔHÐHØ�T”[Ð Ð Ø�OŠO˜DœK¨Ô/°´´À6Ò1IÑJÔJÐJÐJÐJð !Ð r)   c                 ó\   •—  t          ¦   «         j        |Ž  |                      ¦   «          d S r4   )r9   Úzoomrƒ  ©r;   r<   r>   s     €r'   r…  zNavigationToolbar2Wx.zoomu  s.   ø€ Ø�‰ŒŒ�dÐÐØ×$Ò$Ñ&Ô&Ð&Ð&Ð&r)   c                 ó\   •—  t          ¦   «         j        |Ž  |                      ¦   «          d S r4   )r9   Úpanrƒ  r†  s     €r'   rˆ  zNavigationToolbar2Wx.pany  s.   ø€ Ø�‰ŒŒ�TÐÐØ×$Ò$Ñ&Ô&Ð&Ð&Ð&r)   c           	      ó¤  — | j                              ¦   «         \  }}}| j                              ¦   «         }t          j        | j                              ¦   «         dt          j        d         ||t          j        t          j	        z  ¦  «        }| 
                    |¦  «         |                     ¦   «         t          j        k    �rŠt          j        |                     ¦   «         ¦  «        }t                                dt%          | ¦  «        |¦  «         ||                     ¦   «                  }|j        dd …         }	|	| j                              ¦   «         v r%||	k    rt                                d|	||	¦  «         |	}t          j        d         r!t/          |j        ¦  «        t          j        d<   	 | j         j                             ||¬¦  «         d S # t6          $ rn}
t          j        | j                              ¦   «         t/          |
¦  «        d¬¦  «        }|                     ¦   «          |                     ¦   «          Y d }
~
d S d }
~
ww xY wd S )	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   r   r   )rï  rè  Úget_default_filenamer   Ú
FileDialogr  r  r  ÚFD_SAVEÚFD_OVERWRITE_PROMPTÚSetFilterIndexr#   ÚID_OKÚpathlibr   ÚGetPathrq   rr   rs   ÚGetFilterIndexÚsuffixÚget_supported_filetypesÚwarningr2  r   rz  ÚsavefigÚ	Exceptionr    r$   )r;   r<   rß  rå  rã  Údefault_filer&   r­   ÚfmtrÕ  Úes              r'   Úsave_figurez NavigationToolbar2Wx.save_figure}  s&  € à(,¬×(LÒ(LÑ(NÔ(NÑ%ˆ	�4˜Ø”{×7Ò7Ñ9Ô9ˆÝ”ØŒK×!Ò!Ñ#Ô# ^ÝŒLÐ,Ô-¨|¸YÝŒJ�Ô/Ñ/ñ1ô 1ˆð 	×Ò˜lÑ+Ô+Ð+Ø×ÒÑÔ¥¤Ò)Ñ)Ý”< §¢Ñ 0Ô 0Ñ1Ô1ˆDÝ�JŠJÐ0µ$°t±*´*¸dÑCÔCÐCØ�v×,Ò,Ñ.Ô.Ô/ˆCØ”+˜a˜b˜b”/ˆCØ�d”k×9Ò9Ñ;Ô;Ð;Ð;ÀÀsÂ
À
õ —’ð <à  # sñ,ô ,ð ,ð �åŒ|Ð/Ô0ð EÝ47¸¼Ñ4DÔ4D•”Ð0Ñ1ð!Ø”Ô"×*Ò*¨4¸Ð*Ñ<Ô<Ð<Ð<Ð<øÝð !ð !ð !ÝÔ)Øœ;×0Ò0Ñ2Ô2½CÀ¹F¼FØ.ð0ñ 0ô 0�ð × Ò Ñ"Ô"Ð"Ø—’Ñ Ô Ð Ð Ð Ð Ð Ð Ð øøøøð!øøøð# *Ð)s   Æ2!G Ç
IÇA#IÉIc                 ó�   — | j         j        j        j        }|||z
  |||z
  f| j         _        | j                              ¦   «          d S r4   )rï  rz  rÊ   rw   r~  r»  )r;   r´  rö  r÷  rø  rù  rw   s          r'   Údraw_rubberbandz$NavigationToolbar2Wx.draw_rubberbandž  sG   € Ø”Ô#Ô(Ô/ˆØ(*¨F°R©K¸¸VÀb¹[Ð'IˆŒÔ$ØŒ×ÒÑÔÐÐÐr)   c                 óP   — d | j         _        | j                              ¦   «          d S r4   )rï  r~  r»  rC   s    r'   Úremove_rubberbandz&NavigationToolbar2Wx.remove_rubberband£  s&   € Ø'+ˆŒÔ$ØŒ×ÒÑÔÐÐÐr)   c                 óL   — | j         r| j                             |¦  «         d S d S r4   )rV  rZ  ÚSetLabel©r;   r‹   s     r'   Úset_messagez NavigationToolbar2Wx.set_message§  s4   € ØÔð 	)ØÔ×%Ò% aÑ(Ô(Ð(Ð(Ð(ð	)ð 	)r)   c                 ó&  — | j         j        dk    }| j         j        t          | j         j        ¦  «        dz
  k     }d| j        v r!|                      | j        d         |¦  «         d| j        v r#|                      | j        d         |¦  «         d S d S )Nr   r*   ÚBackÚForward)Ú
_nav_stackÚ_posÚlenÚ	_elementsrM  Ú
EnableTool)r;   Úcan_backwardÚcan_forwards      r'   Úset_history_buttonsz(NavigationToolbar2Wx.set_history_buttons«  s�   € Ø”Ô+¨aÒ/ˆØ”oÔ*­S°´Ô1JÑ-KÔ-KÈaÑ-OÒOˆØ�T”[Ð Ð Ø�OŠO˜DœK¨Ô/°Ñ>Ô>Ð>Ø˜œÐ#Ð#Ø�OŠO˜DœK¨	Ô2°KÑ@Ô@Ð@Ð@Ð@ð $Ð#r)   rŽ  )rK   rL   rM   r   Ú	TB_BOTTOMr:   r  rQ  rƒ  r…  rˆ  rœ  rž  r   r¤  r¯  rO   rP   s   @r'   r?  r?  3  sô   ø€ € € € € ð2¸"¼,ð 2ð 2ð 2ð 2ð 2ð@ ð=ð =ñ „\ð=ð4Kð Kð Kð'ð 'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð 'ð!ð !ð !ðBð ð ð
ð ð ð)ð )ð )ðAð Að Að Að Að Að Ar)   r?  c                   óB   — e Zd Zdej        fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dS )Ú	ToolbarWxNc                 óx  — |€|j                              ¦   «         }t          j        | |¦  «         t          j                             | |d|¬¦  «         |                      ¦   «         | _        t	          j        | t          j	        ¬¦  «        | _
        |                      | j
        ¦  «         i | _        i | _        d S )Nrè  r@  )rï  r  r   r:   r   rJ  rW  Ú_spacerX  rY  rZ  r[  Ú
_toolitemsÚ_groups)r;   rÿ  r   r   s       r'   r:   zToolbarWx.__init__·  s    € Øˆ>Ø Ô'×1Ò1Ñ3Ô3ˆFÝÔ" 4¨Ñ5Ô5Ð5Ý
Œ
×Ò˜D &¨"°EÐÑ:Ô:Ð:Ø×.Ò.Ñ0Ô0ˆŒÝœ=¨µR´^ÐDÑDÔDˆÔØ�Š˜Ô(Ñ)Ô)Ð)ØˆŒØˆŒˆˆr)   c                 óP   ‡ ‡— ˆ ˆfd„t          ‰ j        ¦  «        D ¦   «         \  }|S )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.
        c                 óF   •— g | ]}‰                      |¦  «        ‰k    ¯|‘ŒS r~   )ÚGetToolByPos)r6  rE  r;   Útools     €€r'   r7  z+ToolbarWx._get_tool_pos.<locals>.<listcomp>É  s;   ø€ ð 3ð 3ð 3˜Ø×$Ò$ SÑ)Ô)¨TÒ1Ð1ð Ø1Ð1Ð1r)   )ÚrangeÚ
ToolsCount)r;   rº  rE  s   `` r'   Ú_get_tool_poszToolbarWx._get_tool_posÂ  sA   øø€ ð3ð 3ð 3ð 3ð 3�u T¤_Ñ5Ô5ð 3ñ 3ô 3‰ˆàˆ
r)   c           	      ó–  ‡ ‡— |‰ j         vr5‰                      ‰                      ‰ j        ¦  «        ¦  «        ‰ j         |<   ‰ j         |         }d„ t	          ‰ j        t          ‰ j        ¦  «        ¦  «        D ¦   «         }|dk    rC||d         k    rdn3‰                      ||                     |¦  «        dz
           ¦  «        dz   }	n‰                      |¦  «        dz   }	|	|z   }
|r\t           
                    |¦  «        }|st          j        nt          j        }‰                      |
d‰|t          j        ||pd¦  «        }nk‰                      ‰¦  «        d         dz   df}|rt          j        ‰ d‰|¬¦  «        }nt          j        ‰ d‰|¬¦  «        }‰                      |
|‰¬¦  «        }‰                      ¦   «          ˆˆ fd	„}|r"‰                      t          j        ||¦  «         n |                     t          j        |¦  «         ‰ j                             ‰g ¦  «         ‰ j        ‰                              ||f¦  «         d S )
Nc                 ób   — g | ],}|                      ¦   «         ¯|                     ¦   «         °*|‘Œ-S r~   )ÚIsSeparatorÚIsStretchableSpace)r6  Úts     r'   r7  z*ToolbarWx.add_toolitem.<locals>.<listcomp>Õ  sP   € ð Cð Cð C�aØ—=’=‘?”?ðCØ+,×+?Ò+?Ñ+AÔ+AðC�ð Cð Cð Cr)   r   r*   rè  Ú é
   rv  ©rG  c                 ó2   •— ‰                      ‰¦  «         d S r4   )Útrigger_tool)r´  rS   r;   s    €€r'   Úhandlerz'ToolbarWx.add_toolitem.<locals>.handlerï  s   ø€ Ø×Ò˜dÑ#Ô#Ð#Ð#Ð#r)   )r¶  ÚInsertSeparatorr½  r´  rx  r¹  r»  r¼  Úindexr?  rQ  r   rS  rR  Ú
InsertToolr  ÚGetTextExtentÚToggleButtonÚButtonÚInsertControlr\  rƒ  rU  rŒ  rµ  Ú
setdefaultrÝ  )r;   rS   ÚgroupÚpositionr`  ÚdescriptionÚtoggleÚsepÚsepsÚstartÚidxrõ  rI  rº  rô   rG  rÈ  s   ``               r'   Úadd_toolitemzToolbarWx.add_toolitemÍ  so  øø€ ð ˜œÐ$Ð$Ø"&×"6Ò"6Ø×"Ò" 4¤;Ñ/Ô/ñ#1ô #1ˆDŒL˜ÑàŒl˜5Ô!ˆðCð C�3˜tÔ0µ%¸¼Ñ2HÔ2HÑIÔIð Cñ Cô Cˆð �qŠ=ˆ=ð   a¤š.˜.�Q�QØ×,Ò,¨T°$·*²*¸S±/´/ÀAÑ2EÔ-FÑGÔGÈ!ÑKð ˆEð ×&Ò& sÑ+Ô+¨aÑ/ˆEØ�hÑˆØð 	@Ý&×,Ò,¨ZÑ8Ô8ˆCØ)/ÐB•2”>�>µR´]ˆDØ—?’? 3¨¨D°#µr´}ÀdØ#.Ð#4°"ñ6ô 6ˆDˆDð ×&Ò& tÑ,Ô,¨QÔ/°"Ñ4°bÐ9ˆDØð ?Ýœ/¨$°°D¸tÐDÑDÔD��åœ) D¨"¨d¸Ð>Ñ>Ô>�Ø×%Ò% c¨7¸$Ð%Ñ?Ô?ˆDØ�Š‰Œˆð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð ð 	4Ø�IŠI•b”k 7¨DÑ1Ô1Ð1Ð1à�LŠL�Ô)¨7Ñ3Ô3Ð3àŒ×"Ò" 4¨Ñ,Ô,Ð,ØŒ˜Ô×$Ò$ d¨G _Ñ5Ô5Ð5Ð5Ð5r)   c                 ó  — || j         vrd S | j         |         D ]\\  }}|                     ¦   «         s|                      |j        |¦  «         Œ5|                     ¦   «                              |¦  «         Œ]|                      ¦   «          d S r4   )rµ  Ú	IsControlr�  rT  Ú
GetControlÚSetValuer»  )r;   rS   Útoggledrº  rÈ  s        r'   Útoggle_toolitemzToolbarWx.toggle_toolitemú  s‹   € Ø�t”Ð&Ð&ØˆFØ!œ_¨TÔ2ð 	4ð 	4‰MˆD�'Ø—>’>Ñ#Ô#ð 4Ø—’ ¤¨Ñ1Ô1Ð1Ð1à—’Ñ!Ô!×*Ò*¨7Ñ3Ô3Ð3Ð3Ø�Š‰Œˆˆˆr)   c                 óp   — | j         |         D ]\  }}|                      |j        ¦  «         Œ | j         |= d S r4   )rµ  Ú
DeleteToolrT  )r;   rS   rº  rÈ  s       r'   Úremove_toolitemzToolbarWx.remove_toolitem  sC   € Ø!œ_¨TÔ2ð 	%ð 	%‰MˆD�'Ø�OŠO˜DœGÑ$Ô$Ð$Ð$ØŒO˜DÐ!Ð!Ð!r)   c                 ó:   — | j                              |¦  «         d S r4   )rZ  r¢  r£  s     r'   r¤  zToolbarWx.set_message	  s   € ØÔ×!Ò! !Ñ$Ô$Ð$Ð$Ð$r)   )rK   rL   rM   r   r°  r:   r½  rÙ  rß  râ  r¤  r~   r)   r'   r²  r²  ¶  s{   € € € € € Ø+/°r´|ð 	ð 	ð 	ð 	ð	ð 	ð 	ð+6ð +6ð +6ðZð ð ð"ð "ð "ð
%ð %ð %ð %ð %r)   r²  c                   ó   — e Zd Zd„ ZdS )ÚConfigureSubplotsWxc                 ó:   — t                                | ¦  «         d S r4   )r?  Úconfigure_subplots©r;   r<   s     r'   ÚtriggerzConfigureSubplotsWx.trigger  s   € Ý×/Ò/°Ñ5Ô5Ð5Ð5Ð5r)   N©rK   rL   rM   ré  r~   r)   r'   rå  rå    s#   € € € € € ð6ð 6ð 6ð 6ð 6r)   rå  c                   ó   — e Zd Zd„ ZdS )ÚSaveFigureWxc                 ó^   — t                                |                      ¦   «         ¦  «         d S r4   )r?  rœ  Ú"_make_classic_style_pseudo_toolbarrè  s     r'   ré  zSaveFigureWx.trigger  s3   € Ý×(Ò(Ø×3Ò3Ñ5Ô5ñ	7ô 	7ð 	7ð 	7ð 	7r)   Nrê  r~   r)   r'   rì  rì    s#   € € € € € ð7ð 7ð 7ð 7ð 7r)   rì  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚRubberbandWxc                 óh   — t                                |                      ¦   «         d ||||¦  «         d S r4   )r?  rž  rî  )r;   rö  r÷  rø  rù  s        r'   rž  zRubberbandWx.draw_rubberband  sB   € Ý×,Ò,Ø×3Ò3Ñ5Ô5°t¸RÀÀRÈñ	Mô 	Mð 	Mð 	Mð 	Mr)   c                 ó^   — t                                |                      ¦   «         ¦  «         d S r4   )r?  r   rî  rC   s    r'   r   zRubberbandWx.remove_rubberband   s3   € Ý×.Ò.Ø×3Ò3Ñ5Ô5ñ	7ô 	7ð 	7ð 	7ð 	7r)   N)rK   rL   rM   rž  r   r~   r)   r'   rð  rð    s5   € € € € € ðMð Mð Mð7ð 7ð 7ð 7ð 7r)   rð  c                   óL   ‡ — 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)rZ   éŒ   r\   c                 óP  •— t          ¦   «                              |dt          j        t          j        z  ¬¦  «         t          j        t          j        ¦  «        }t          j        dddd¦  «        }|                      ¦   «          	                    ¦   «         }t          | j        |z   ¦  «        D ]~\  }}t          || j        ¦  «        D ]c\  }}	t          j        | |¬¦  «        }
|dk    r|
                     |¦  «         |
                     |	¦  «         |                     |
ddd¦  «         ŒdŒ|                     |dt          j        d¦  «         t          j        | t          j        ¦  «        }|                     |dt          j        t          j        z  d¦  «         |                      |¦  «         |                     | ¦  «         |                      ¦   «          |                      t          j        | j        ¦  «         |                     t          j        | j        ¦  «         d S )NÚHelp)r)  r   r   r—   é   é   rÅ  )r9   r:   r   ÚDEFAULT_DIALOG_STYLEÚRESIZE_BORDERÚBoxSizerÚVERTICALÚFlexGridSizerÚGetFontÚMakeBoldrÛ  ÚheadersÚzipÚwidthsrX  rˆ   ÚWrapÚAddÚALLrÎ  r�  ÚALIGN_CENTER_HORIZONTALÚSetSizerrô  ÚLayoutrƒ  rõ  rö  Ú
EVT_BUTTON)r;   r   Úhelp_entriesr  Ú
grid_sizerrb   ÚrÚrowÚcolru   rG  Úokr>   s               €r'   r:   z_HelpDialog.__init__*  sÒ  ø€ Ý‰Œ×Ò˜ vÝ!Ô6½Ô9IÑIð 	ñ 	Kô 	Kð 	Kõ ”�BœKÑ(Ô(ˆÝÔ% a¨¨A¨qÑ1Ô1ˆ
à�|Š|‰~Œ~×&Ò&Ñ(Ô(ˆÝ ¤¨|Ñ ;Ñ<Ô<ð 	/ð 	/‰FˆAˆsÝ # C¨¬Ñ 5Ô 5ð /ð /‘��eÝœ d°#Ð6Ñ6Ô6�Ø˜’6�6Ø—M’M $Ñ'Ô'Ð'Ø—
’
˜5Ñ!Ô!Ð!Ø—’˜u a¨¨AÑ.Ô.Ð.Ð.ð/ð 	�	Š	�*˜a¥¤¨Ñ+Ô+Ð+ÝŒY�t�RœXÑ&Ô&ˆØ�	Š	�"�a�Ô3µb´fÑ<¸aÑ@Ô@Ð@Ø�Š�eÑÔÐØ�	Š	�$‰ŒˆØ�Š‰ŒˆØ�	Š	•"”, ¤Ñ/Ô/Ð/Ø
�Š•”˜tœ~Ñ.Ô.Ð.Ð.Ð.r)   c                 ón   — d t           _        |                      ¦   «          |                     ¦   «          d S r4   )rô  Ú	_instanceÚDestroyLaterrK  rÑ  s     r'   rö  z_HelpDialog._on_closeC  s-   € Ø $�ÔØ×ÒÑÔÐØ�
Š
‰Œˆˆˆr)   c                 óž   — | j         r| j                              ¦   «          d S  | ||¦  «        | _         | j                              ¦   «          d S r4   )r  r  r  )rE  r   r  s      r'   r  z_HelpDialog.showH  sT   € ð Œ=ð 	ØŒM×ÒÑ!Ô!Ð!ØˆFØ˜˜F LÑ1Ô1ˆŒØŒ×ÒÑÔÐÐÐr)   )rK   rL   rM   r  r  r  r:   rö  r/  r  rO   rP   s   @r'   rô  rô  %  sx   ø€ € € € € Ø€IØ5Ð6€GØˆ_ˆ_€Fð/ð /ð /ð /ð /ð2ð ð ð
 ðð ñ „[ðð ð ð ð r)   rô  c                   ó   — e Zd Zd„ ZdS )ÚHelpWxc                 ó˜   — t                                | j        j                             ¦   «         |                      ¦   «         ¦  «         d S r4   )rô  r  rz  rï  ÚGetTopLevelParentÚ_get_help_entriesrè  s     r'   ré  zHelpWx.triggerT  sF   € Ý×Ò˜œÔ+×=Ò=Ñ?Ô?Ø×/Ò/Ñ1Ô1ñ	3ô 	3ð 	3ð 	3ð 	3r)   Nrê  r~   r)   r'   r  r  R  s#   € € € € € ð3ð 3ð 3ð 3ð 3r)   r  c                   ó   — e Zd Zd„ ZdS )ÚToolCopyToClipboardWxc                 óÆ  — | j         j        s| j                              ¦   «          | j         j                             ¦   «         rt
          j                             ¦   «         sd S 	 t
          j                             t          j	        | j         j        ¦  «        ¦  «         t
          j         
                    ¦   «          d S # t
          j         
                    ¦   «          w xY wr4   )rï  r}  r  rx   r8  r   r®  r°  r±  r¬  r²  )r;   r<   r=   s      r'   ré  zToolCopyToClipboardWx.trigger[  sµ   € ØŒ{Ô#ð 	ØŒK×ÒÑÔÐØŒ{Ô!×&Ò&Ñ(Ô(ð 	µ´×0DÒ0DÑ0FÔ0Fð 	ØˆFð	$ÝŒO×#Ò#¥BÔ$7¸¼Ô8JÑ$KÔ$KÑLÔLÐLåŒO×!Ò!Ñ#Ô#Ð#Ð#Ð#ø�BŒO×!Ò!Ñ#Ô#Ð#Ð#øøøs   Á%;C  Ã  C Nrê  r~   r)   r'   r  r  Y  s#   € € € € € ð$ð $ð $ð $ð $r)   r  c                   ó$   — e Zd ZeZeZej        ZdS )Ú
_BackendWxN)	rK   rL   rM   rÊ  ÚFigureCanvasrD  ÚFigureManagerr  Úmainloopr~   r)   r'   r!  r!  j  s    € € € € € à!€LØ#€MØÔ.€H€H€Hr)   r!  r4   )MrN   rÒ  ÚloggingrÓ   r‘  r  r?  Únumpyrh  re  Ú
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   Ú	getLoggerrK   rq   rö   r  r(   Ú	lru_cacher0   r2   rY   rá   r{  rB  rÊ  ÚFramerã  rD  r4  rë  rJ  r?  r²  Ú_register_tool_classÚConfigureSubplotsBaserå  ÚSaveFigureBaserì  ÚRubberbandBaserð  ÚDialogrô  ÚToolHelpBaser  ÚToolCopyToClipboardBaser  Ú_toolbar2_classÚ_toolmanager_toolbar_classÚexportr!  r~   r)   r'   ú<module>r9     s#  ððð ð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø €€€à Ð Ð Ð Ø 
€
€
€
à Ð Ð Ð ðBð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø *Ð *Ð *Ð *Ð *Ð *à 	€	€	€	à€wÔ˜Ñ"Ô"€ð
 €ð €„�ÑÔðð ð ñ Ôðð €Ô�QÑÔðð ñ Ôðð ð  ð  ð  ð  ˆiñ  ô  ð  ð& €„Ø	�˜y°,ØØFðHñ Hô HðPCð PCð PCð PCð PC�ñ PCô PCñ	Hô HðPCðfj9ð j9ð j9ð j9ð j9Ð+ñ j9ô j9ð j9ðZ1ð 1ð 1ð 1ð 1Ð*¨B¬Hñ 1ô 1ð 1ðD-*ð -*ð -*ð -*ð -*Ð(ñ -*ô -*ð -*ð`Mð Mð Mð Mð M�B”Hñ Mô Mð Mð`F3ð F3ð F3ð F3ð F3Ð'ñ F3ô F3ð F3ðRDð Dð Dðð ð ð~Að ~Að ~Að ~Að ~AÐ-¨r¬zñ ~Aô ~Að ~AðFT%ð T%ð T%ð T%ð T%Ð! 2¤:ñ T%ô T%ð T%ðn $€Ô#Ð$7Ñ8Ô8ð6ð 6ð 6ð 6ð 6˜-Ô=ñ 6ô 6ñ 9Ô8ð6ð
 $€Ô#Ð$7Ñ8Ô8ð7ð 7ð 7ð 7ð 7�=Ô/ñ 7ô 7ñ 9Ô8ð7ð $€Ô#Ð$7Ñ8Ô8ð7ð 7ð 7ð 7ð 7�=Ô/ñ 7ô 7ñ 9Ô8ð7ð*ð *ð *ð *ð *�"”)ñ *ô *ð *ðZ $€Ô#Ð$7Ñ8Ô8ð3ð 3ð 3ð 3ð 3ˆ]Ô'ñ 3ô 3ñ 9Ô8ð3ð $€Ô#Ð$7Ñ8Ô8ð	$ð 	$ð 	$ð 	$ð 	$˜MÔAñ 	$ô 	$ñ 9Ô8ð	$ð #7€Ô Ø-6€Ô *ð 
„ð/ð /ð /ð /ð /�ñ /ô /ñ „ð/ð /ð /r)   