§
    ‚ØjrÊ  ã                   ó¸  — 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m Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'Z'ddl(Z' ej)        e*¦  «        Z+dZ, ej-        d	¦  «        d
„ ¦   «         Z. G d„ de¦  «        Z/ ej0        dddddd¬¦  «         G d„ de¦  «        ¦   «         Z1 G d„ de¦  «        Z2 G d„ dee'j3        ¦  «        Z4 G d„ de4¦  «        Z5 G d„ de'j6        ¦  «        Z7 G d„ de¦  «        Z8d „ Z9d!„ Z: G d"„ d#ee'j;        ¦  «        Z< G d$„ d%ee'j;        ¦  «        Z= ej>        e4¦  «         G d&„ d'ej?        ¦  «        ¦   «         Z@ ej>        e4¦  «         G d(„ d)ejA        ¦  «        ¦   «         ZB ej>        e4¦  «         G d*„ d+ejC        ¦  «        ¦   «         ZD G d,„ d-e'jE        ¦  «        ZF ej>        e4¦  «         G d.„ d/ejG        ¦  «        ¦   «         ZH ej>        e4¦  «         G d0„ d1ejI        ¦  «        ¦   «         ZJe<e8_K        e=e8_L        ejM         G d2„ d3e¦  «        ¦   «         ZNdS )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Ú_c_internal_utils)ÚGcf)ÚPath)ÚAffine2DéK   é   c                  ó¤   — t          j        d¦  «        } |                      d¦  «         t          j        ¦   «          t          j        ¦   «          | S )NFT)ÚwxÚAppÚSetExitOnFrameDeleter   Ú_setup_new_guiappr   Ú Win32_SetProcessDpiAwareness_max)Úwxapps    ú“/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/matplotlib/backends/backend_wx.pyÚ_create_wxappr#   ,   sF   € åŒF�5‰MŒM€EØ	×Ò˜tÑ$Ô$Ð$Ý	ÔÑÔÐåÔ6Ñ8Ô8Ð8Ø€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          ¦   «         j        |i |¤Ž d S ©N)r   ÚTimerÚ_timerÚ	_on_timerÚNotifyÚsuperÚ__init__)ÚselfÚargsÚkwargsÚ	__class__s      €r"   r.   zTimerWx.__init__9   s>   ø€ Ý”h‘j”jˆŒØ!œ^ˆŒÔØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r$   c                 óP   — | j                              | j        | j        ¦  «         d S r(   )r*   ÚStartÚ	_intervalÚ_single©r/   s    r"   Ú_timer_startzTimerWx._timer_start>   s$   € ØŒ×Ò˜$œ.¨$¬,Ñ7Ô7Ð7Ð7Ð7r$   c                 ó8   — | j                              ¦   «          d S r(   )r*   ÚStopr7   s    r"   Ú_timer_stopzTimerWx._timer_stopA   s   € ØŒ×ÒÑÔÐÐÐr$   c                 ód   — | j                              ¦   «         r|                      ¦   «          d S d S r(   )r*   Ú	IsRunningr8   r7   s    r"   Ú_timer_set_intervalzTimerWx._timer_set_intervalD   s:   € ØŒ;× Ò Ñ"Ô"ð 	 Ø×ÒÑÔÐÐÐð	 ð 	 r$   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   r8   r;   r>   Ú__classcell__©r2   s   @r"   r&   r&   6   sk   ø€ € € € € Ø9Ð9ð*ð *ð *ð *ð *ð
8ð 8ð 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                   ó"  ‡ — 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)ÚitalicrS   Ú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)r-   r.   Ú_logÚdebugÚtypeÚGetWidthÚwidthÚ	GetHeightÚheightÚbitmapÚfontdÚdpiÚgc)r/   rl   rn   r2   s      €r"   r.   zRendererWx.__init__�   sx   ø€ å‰Œ×ÒÑÔÐÝ�
Š
Ð$¥d¨4¡j¤jÑ1Ô1Ð1Ø—_’_Ñ&Ô&ˆŒ
Ø×&Ò&Ñ(Ô(ˆŒØˆŒØˆŒ
ØˆŒØˆŒˆˆr$   c                 ó   — dS )NT© r7   s    r"   ÚflipyzRendererWx.flipyŒ   s   € àˆtr$   c                 ó,  — |rt          j        |¦  «        }| j        €|                      ¦   «         }n| j        }|j        }|                      ||¦  «        }|                     |t          j        ¦  «         | 	                    |¦  «        \  }}}	}
|||	fS r(   )
r   Ú
strip_mathro   Únew_gcÚgfx_ctxÚget_wx_fontÚSetFontr   ÚBLACKÚGetFullTextExtent)r/   ÚsÚpropÚismathro   rv   Ú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 r(   )ri   rk   r7   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Úboundsrv   Ú_lastcliprectÚ	ResetClipÚCliprk   )r/   ro   Ú
new_boundsrv   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 r(   )Ú
CreatePathÚiter_segmentsr   ÚMOVETOÚMoveToPointÚLINETOÚAddLineToPointÚCURVE3ÚAddQuadCurveToPointÚCURVE4ÚAddCurveToPointÚ	CLOSEPOLYÚCloseSubpath)rv   Ú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�   rv   r   ÚscaleÚ	translaterk   r¢   ÚSetBrushr   ÚBrushÚget_wxcolourÚDrawPathÚ
StrokePathÚunselect)r/   ro   r�   rž   ÚrgbFacerv   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Š   ri   rk   Úshaper   ÚBitmapÚFromBufferRGBAÚtobytesr¥   rv   Ú
DrawBitmapÚintr­   )r/   ro   ÚxÚyÚimÚbboxÚlÚbr   r€   ÚrowsÚcolsrl   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   rt   re   rf   rg   r¥   r�   rv   rw   rª   Úget_rgbrx   rƒ   r¶   ÚDrawTextÚmathÚradiansÚsinÚcosÚDrawRotatedTextr­   )r/   ro   r·   r¸   r{   r|   Úangler}   Úmtextrv   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())re   rf   rg   ÚGraphicsContextWxrl   ro   r¥   r­   r7   s    r"   ru   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ÚfamilyÚstyleÚweight)re   rf   rg   Úhashrm   Ú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"   rw   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_INCHrn   )r/   r    s     r"   rÙ   zRendererWx.points_to_pixels  s   € à�¨4Ñ/°$´(Ñ:¸TÑAÑBÐBr$   r(   )FN)!r?   r@   rA   rB   r   ÚFONTWEIGHT_LIGHTÚFONTWEIGHT_NORMALÚFONTWEIGHT_BOLDrâ   ÚFONTSTYLE_ITALICÚFONTSTYLE_NORMALÚFONTSTYLE_SLANTrà   ÚFONTFAMILY_SWISSÚFONTFAMILY_ROMANÚFONTFAMILY_SCRIPTÚFONTFAMILY_DECORATIVEÚFONTFAMILY_MODERNrÝ   r.   rr   rƒ   r…   r�   Ústaticmethodr¢   r¯   r¿   rÏ   ru   rw   rÙ   rC   rD   s   @r"   rM   rM   I   sr  ø€ € € € € ð
ð ðØˆRÔ ðàˆRÔ ðð 	ˆRÔ ðð 	ˆRÔ!ð	ð
 	ˆRÔ!ðð 	ˆRÔ!ðð 	ˆRÔðð 	ˆRÔðð 	ˆRÔðð 	�bÔ)ðð 	�Ô$ðð 	�"Ô&ðð 	�"Ô&ðð 	�BÔ(ðð 	�Ô"ðð  	�Ô#ð!ð" 	�RÔ'ð#ð$ 	�Ô#ð%ð €Kð* Ô%ØÔ%ØÔ%ðð €Jð Ô#ØÔ$ØÔ&ØÔ.ØÔ&ØÔ'ØÔ'ðð €Ið	ð 	ð 	ð 	ð 	ðð ð ðð ð ð"'ð 'ð 'ð;ð ;ð ;ð ðð ñ „\ððð ð ð ðð ð ð ð ð ð ð8ð ð ðð ð ð"Cð Cð Cð Cð Cð Cð Cr$   rM   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)NNry   r   )r-   r.   re   rf   rg   Ú_cacherØ   r   ÚMemoryDCÚGraphicsContextÚCreater‹   rl   Údcrv   ÚPenÚSOLIDÚ_penÚSetPenÚrenderer)r/   rl   r  rþ   rv   r2   s        €r"   r.   zGraphicsContextWx.__init__4  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þ   ÚSelectObjectrl   Ú
IsSelectedr7   s    r"   r¥   zGraphicsContextWx.selectG  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	  r7   s    r"   r­   zGraphicsContextWx.unselectM  s:   € åŒ<˜7Ò"Ð"ØŒG× Ò ¥¤Ñ/Ô/Ð/Ø#ˆDŒOˆOˆOð #Ð"r$   Nc                 ó¨  •— t                                dt          | ¦  «        ¦  «         |                      ¦   «          t	          ¦   «                              ||¦  «         | j                             |                      |  	                    ¦   «         ¦  «        ¦  «         | j
                             | j        ¦  «         |                      ¦   «          d S )Nz%s - set_foreground())re   rf   rg   r¥   r-   Úset_foregroundr  Ú	SetColourrª   rÁ   rv   r  r­   )r/   ÚfgÚisRGBAr2   s      €r"   r  z GraphicsContextWx.set_foregroundS  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   )Úfloatre   rf   rg   r¥   r-   Úset_linewidthr¶   r  rÙ   Ú
_linewidthr  ÚSetWidthrv   r  r­   )r/   r   Úlwr2   s      €r"   r  zGraphicsContextWx.set_linewidthb  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())re   rf   rg   r¥   r-   Úset_capstyler  ÚSetCaprÑ   Ú_capdÚ	_capstylerv   r  r­   )r/   Úcsr2   s     €r"   r  zGraphicsContextWx.set_capstyleq  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())re   rf   rg   r¥   r-   Úset_joinstyler  ÚSetJoinrÑ   Ú_joindÚ
_joinstylerv   r  r­   )r/   Újsr2   s     €r"   r  zGraphicsContextWx.set_joinstylez  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$   )re   rf   rg   r   ÚColour)r/   rÊ   s     r"   rª   zGraphicsContextWx.get_wxcolourƒ  s9   € å�
Š
Ð(­$¨t©*¬*Ñ5Ô5Ð5ÝŒyÐ7Ð7°Ð7Ñ7Ô7Ð8Ð8r$   r(   )r?   r@   rA   rB   r   ÚCAP_BUTTÚCAP_PROJECTINGÚ	CAP_ROUNDr  Ú
JOIN_BEVELÚ
JOIN_MITERÚ
JOIN_ROUNDr   ÚweakrefÚWeakKeyDictionaryrú   r.   r¥   r­   r  r  r  r  rª   rC   rD   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¥ZDdVd3„ZEdVd4„ZFd5„ ZGd6„ ZHd7„ ZIdWd9„ZJdVd:„ZKd;„ ZLdVd<„ZMi eNjO        ¥d=d>d>d?d@dAdAdBdCœ¥ZOdD„ ZPdE„ ZQeRdF„ ¦   «         ZSeRdVd2dGœdH„¦   «         ZTdI„ ZUdVdJ„ZVdK„ ZWdL„ ZXdM„ ZYdXdO„ZZdP„ Z[dQ„ Z\dR„ Z]dS„ Z^dT„ Z_dU„ Z`d2S )YÚ_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                 ón
  — t          j        | |¦  «         t          j        t	          t
          j        | j        j        j	        ¦  «        Ž }t          j
        dk    r|                     |¦  «        }t          j                             | |||¬¦  «         d| _        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          j.        | j/        ¦  «         |                      t          j0        | j1        ¦  «         |                      t          j2        | j3        ¦  «         |                      t          j4        | j5        ¦  «         |                      t          j6        | j7        ¦  «         |                      t          j8        | j7        ¦  «         |  9                    t          j:        ¦  «         |  ;                    t          j<        ¦  «         t          j
        dk    rX|  =                    ¦   «         }|  >                    |  ?                    ¦   «         d|z  z  ¦  «         |  @                    |¦  «         dS dS )	zÏ
        Initialize a FigureWx instance.

        - Initialize the FigureCanvasBase and wxPanel parents.
        - Set event handlers for resize, paint, and keyboard and mouse
          interaction.
        Ú	__WXMSW__©rå   NFry   r   ÚWHITEÚ	__WXMAC__)Ar   r.   r   ÚSizeÚmaprÃ   ÚceilÚfigurerº   rå   ÚPlatformÚFromDIPÚPanelrl   Ú_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ÚSetBackgroundColourrh  ÚGetDPIScaleFactorÚSetInitialSizeÚGetSizeÚ_set_device_pixel_ratio)r/   ÚparentÚidrm  rå   ÚdpiScales         r"   r.   z_FigureCanvasWxBase.__init__Ó  sÌ  € õ 	Ô! $¨Ñ/Ô/Ð/ÝŒw��DœI t¤{Ô'7Ô'<Ñ=Ô=Ð>ˆÝŒ;˜+Ò%Ð%Ø—>’> $Ñ'Ô'ˆDå
Œ×Ò˜$ ¨°ÐÑ6Ô6Ð6ØˆŒØˆŒØ $ˆÔÝ%'¤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Ø× Ò ¥¤Ñ*Ô*Ð*åŒ;˜+Ò%Ð%à×-Ò-Ñ/Ô/ˆHØ×Ò §¢¡¤°°(±
Ñ ;Ñ<Ô<Ð<Ø×(Ò(¨Ñ2Ô2Ð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Ú	SetBitmaprl   ÚTheClipboardÚIsOpenedÚOpenÚSetDataÚFlushÚClose)r/   ÚeventÚbmp_objÚopen_successs       r"   ÚCopy_to_Clipboardz%_FigureCanvasWxBase.Copy_to_Clipboard  s¯   € åÔ%Ñ'Ô'ˆØ×Ò˜$œ+Ñ&Ô&Ð&åŒ×'Ò'Ñ)Ô)ð 	(Ýœ?×/Ò/Ñ1Ô1ˆLØð (Ý”×'Ò'¨Ñ0Ô0Ð0Ý”×%Ò%Ñ'Ô'Ð'Ý”×%Ò%Ñ'Ô'Ð'Ð'Ð'ð	(ð 	(ð(ð (r$   c                 ó€   — |                       |                      ¦   «         ¦  «        r|                      ¦   «          d S d S r(   )r¡  rž  Údraw©r/   r0   r1   s      r"   Ú_update_device_pixel_ratioz._FigureCanvasWxBase._update_device_pixel_ratio  sA   € ð ×'Ò'¨×(>Ò(>Ñ(@Ô(@ÑAÔAð 	Ø�IŠI‰KŒKˆKˆKˆKð	ð 	r$   c                 ó�   — t                                dt          | ¦  «        ¦  «         d| _        |                      d¬¦  «         d S )Nz%s - draw_idle()F©ÚeraseBackground)re   rf   rg   rq  ÚRefreshr7   s    r"   Ú	draw_idlez_FigureCanvasWxBase.draw_idle  s@   € å�
Š
Ð%¥t¨D¡z¤zÑ2Ô2Ð2ØˆŒð 	�Š UˆÑ+Ô+Ð+Ð+Ð+r$   c                 ó,   — t          j        ¦   «          d S r(   )r   ÚYieldr7   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   r)   ÚID_ANYr4   r¶   rw  Ú	EVT_TIMERÚstop_event_loopÚGetIdÚGUIEventLoopr¿  ÚRunr:   )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¿  r=   ÚExit©r/   r®  s     r"   rÆ  z#_FigureCanvasWxBase.stop_event_loop8  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*.%srq   )r&  Úexts     r"   r'  z@_FigureCanvasWxBase._get_imagesave_wildcards.<locals>.<listcomp>H  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ÚirG   Ú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Ñ&Ô&Ð&ØÐ8Ð8 (Ð8Ð8¨hÐ8Ð8ˆ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 )zu
        Update the displayed image on the GUI canvas, using the supplied
        wx.PaintDC device context.
        z%s - gui_repaint()Nrf  r   )re   rf   rg   ÚIsShownOnScreenr   ÚClientDCrn  Ú
isinstancerm  ÚcanvasÚget_rendererrM   rl   ÚConvertToImageÚConvertToBitmaprµ   rr  rk  rÜ   ÚDrawLineListrv  rt  )r/   ÚdrawDCÚbmpÚx0Úy0Úx1Úy1Úrects           r"   Úgui_repaintz_FigureCanvasWxBase.gui_repaintQ  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                                dt          | ¦  «        ¦  «         t          j        | ¦  «        }| j        s|                      |¬¦  «         n|                      |¬¦  «         |                     ¦   «          dS )z$Called when wxPaintEvt is generated.z%s - _on_paint()©rð  N)	re   rf   rg   r   ÚPaintDCrq  r³  r÷  ÚDestroy)r/   r®  rð  s      r"   r{  z_FigureCanvasWxBase._on_paintx  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 | j        j        }t          j        dk    s|                      ¦   «         }||z  }| j        |z  }| j        |z  }| j                             ||d¬¦  «         |                      d¬¦  «         t1          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   rf  )Úforwardr·  Úresize_event)rµ  re   rf   rg   Ú	GetParentÚGetSizerÚGetItemÚ
ProportionÚFlagr   ÚEXPANDÚ
GetMinSizeÚGetClientSizeÚIncToÚgetattrr  Ú_heightrq  rm  rn   rn  rž  Úset_size_inchesr¹  r   Ú_processrº  )	r/   r®  ÚszÚsirå   Údpivalr¦   ÚwinchÚhinchs	            r"   ry  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ð ””ˆÝŒ{˜kÒ)Ð)Ø×*Ò*Ñ,Ô,ˆEØ�e‰OˆFØ”˜fÑ$ˆØ”˜vÑ%ˆØŒ×#Ò# E¨5¸%Ð#Ñ@Ô@Ð@ð
 	�Š UˆÑ+Ô+Ð+Ý�N DÑ)Ô)×2Ò2Ñ4Ô4Ð4Ø�ŠÑÔÐÐÐr$   c                  óz  — t          j        ¦   «         } t          j        |                      ¦   «         ft          j        |                      ¦   «         ft          j        |                      ¦   «         ft          j	        |  
                    ¦   «         ft          j        |                      ¦   «         fg}d„ |D ¦   «         S )Nc                 ó   — h | ]	\  }}|¯|’Œ
S rq   rq   )r&  ÚbuttonÚflags      r"   ú	<setcomp>z3_FigureCanvasWxBase._mpl_buttons.<locals>.<setcomp>¾  s!   € Ð=Ð=Ð=™<˜6 4¸Ð=�Ð=Ð=Ð=r$   )r   ÚGetMouseStater   ÚLEFTÚ
LeftIsDownÚRIGHTÚRightIsDownÚMIDDLEÚMiddleIsDownÚBACKÚ
Aux1IsDownÚFORWARDÚ
Aux2IsDown)ÚstateÚ	mod_tables     r"   Ú_mpl_buttonsz _FigureCanvasWxBase._mpl_buttons°  s¢   € åÔ Ñ"Ô"ˆõ
 Ô˜u×/Ò/Ñ1Ô1Ð2ÝÔ × 1Ò 1Ñ 3Ô 3Ð4ÝÔ ×!3Ò!3Ñ!5Ô!5Ð6ÝÔ˜u×/Ò/Ñ1Ô1Ð2ÝÔ  %×"2Ò"2Ñ"4Ô"4Ð5ð
ˆ	ð >Ð=¨9Ð=Ñ=Ô=Ð=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Úctrlr9  r8  c                 ó2   •— g | ]\  }}}‰|z  r‰|k    ¯|‘ŒS rq   rq   )r&  rG   Úmodrä   r/  Ú	modifierss       €€r"   r'  z6_FigureCanvasWxBase._mpl_modifiers.<locals>.<listcomp>É  s;   ø€ ð ;ð ;ð ;™^˜T 3¨Ø  3‘ð;Ø+2°cª>¨>ð Ø+9¨>¨>r$   c                 óB   — g | ]\  }}}t          j        |¦  «        ¯|‘ŒS rq   )r   ÚGetKeyState)r&  rG   r3  rä   s       r"   r'  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/  r,  r4  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.  r8  r`  )	ÚKeyCodeÚkeyvaldÚchrÚ	ShiftDownÚlowerr>  Ú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                 óh  — |€7t          j        ¦   «         }|                      |j        |j        ¦  «        \  }}n|j        |j        }}t           j        dk    s;|                      ¦   «         }||z  |                      d¬¦  «        d         ||z  z
  fS ||                      d¬¦  «        d         |z
  fS )zv
        Convert a wx position, defaulting to the current cursor position, to
        Matplotlib coordinates.
        Nrf  T©Úphysicalr   )r   r   ÚScreenToClientÚXÚYrn  rž  Úget_width_height)r/   Úposr·   r¸   r¦   s        r"   Ú_mpl_coordsz_FigureCanvasWxBase._mpl_coordsà  sµ   € ð
 ˆ;ÝÔ"Ñ$Ô$ˆCØ×&Ò& s¤u¨c¬eÑ4Ô4‰DˆAˆqˆqà”5˜#œ%ˆqˆAåŒ{˜kÒ)Ð)Ø×*Ò*Ñ,Ô,ˆEØ�U‘7˜D×1Ò1¸4Ð1Ñ@Ô@ÀÔCÀaÈÁgÑMÐMÐMà�d×+Ò+°TÐ+Ñ:Ô:¸1Ô=ÀÑAÐAÐAr$   c                 óÈ   — t          d| |                      |¦  «        g|                      ¦   «         ¢R d|iŽ                     ¦   «          | r|                     ¦   «          dS dS )zCapture key press.Úkey_press_eventÚguiEventN©r   rJ  rS  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_eventrV  NrW  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   Úgetitem_checkedr   ÚMOVEÚCURSOR_HANDÚHANDÚPOINTERÚCURSOR_ARROWÚSELECT_REGIONÚCURSOR_CROSSÚWAITÚCURSOR_WAITÚRESIZE_HORIZONTALÚCURSOR_SIZEWEÚRESIZE_VERTICALÚCURSOR_SIZENSÚ	SetCursorr¹  )r/   r\  s     r"   Ú
set_cursorz_FigureCanvasWxBase.set_cursor  sš   € å”�4Ô/ÝŒL�"œ.ÝŒL�"œ.ÝŒO�Rœ_ÝÔ!¥2¤?ÝŒL�"œ.ÝÔ%¥rÔ'7ÝÔ#¥RÔ%5ð1
ð ðñ ô ñ ô ˆð 	�Š�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)rs  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©r4  rV  T)Údblclickr4  rV  Úbutton_release_eventN)rX  rs  Ú
ButtonDownÚButtonDClickrS  r   ÚMOUSE_BTN_LEFTr   r!  ÚMOUSE_BTN_MIDDLEr%  ÚMOUSE_BTN_RIGHTr#  ÚMOUSE_BTN_AUX1r'  ÚMOUSE_BTN_AUX2r)  Ú	GetButtonrØ   r>  r   r  ÚButtonUp)r/   r®  r·   r¸   Ú
button_mapr  r4  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¸È$Ø!*°Uð<ñ <ô <ß<DºH¹J¼J¸J¸J¸JØ�^Š^ÑÔð 	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 eventsri  Ú_skipwheeleventTFNÚscroll_event)Ústepr4  rV  )rS  ÚLinesPerActionÚWheelRotationÚ
WheelDeltarX  r   rn  rÂ  r†  r   r>  r  )r/   r®  r·   r¸   rˆ  s        r"   r‘  z#_FigureCanvasWxBase._on_mouse_wheel3  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 )rv  Úmotion_notify_event)Úbuttonsr4  rV  N)rX  r   rS  r-  r>  r  rÏ  s     r"   r“  z_FigureCanvasWxBase._on_motionG  sz   € à�
Š
‰ŒˆÝÐ(¨$ð 	#Ø×$Ò$ UÑ+Ô+ð	#ð 	#à×,Ò,Ñ.Ô.Ø!×0Ò0°Ñ7Ô7Ø!ð		#ð 	#ð 	#÷ $,¢8¡:¤: : : :r$   c                 óÀ   — |                      ¦   «          t          d| g|                      |¦  «        ¢R |                      ¦   «         |dœŽ                     ¦   «          dS )zMouse has entered the window.Úfigure_enter_eventrx  N©rX  r   rS  r>  r  rÏ  s     r"   r•  z_FigureCanvasWxBase._on_enterP  ó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_eventrx  Nr‘  rÏ  s     r"   r—  z_FigureCanvasWxBase._on_leaveX  r’  r$   r(   )r   ©T)ar?   r@   rA   rB   Úrequired_interactive_frameworkr&   Ú
_timer_clsr   ÚclasspropertyÚmanager_classr   r8  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_DELETErB  r.   r±  rµ  rº  r½  rÌ  rÆ  ræ  r÷  r   rÝ  r{  ry  ró   r-  r>  rJ  rS  r}  r  rm  rs  r™  r�  r‘  r“  r•  r—  rq   r$   r"   r2  r2  ‰  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73ð 73ð 73ð 73ðr
(ð 
(ð 
(ð 
(ðð ð ð,ð ,ð ,ðð ð ðð ð ð ð!ð !ð !ð !ð3ð 3ð 3ð$Bð Bð Bð Bð6
Ø
Ô
$ð
àØØØØ*Ø)Ø*Øð
ð 
ð 
€Iðð ð ð,ð ,ð ,ð\ ð>ð >ñ „\ð>ð ð,¨dð ,ð ,ð ,ð ,ñ „\ð,ð&ð &ð &ð"Bð Bð Bð Bð"ð ð ðð ð ðð ð ð ð  ð  ð  ð!ð !ð !ðGð Gð Gð2.ð .ð .ð(.ð .ð .ð1ð 1ð 1ð1ð 1ð 1ð 1ð 1r$   r2  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)re   rf   rg   rM   rl   rm  rn   r  r³  rq  r÷  )r/   rð  s     r"   r³  zFigureCanvasWx.drawd  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Ã   rl  rm  rº   ri   rk   r³  rM   rn   r   Úis_writable_file_likerí  ÚSaveFilerÃ  rq  r¹  )r/   ÚfiletypeÚfilenamerl   Ú	saved_objs        r"   Ú_print_imagezFigureCanvasWx._print_imageo  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$   r(   )r?   r@   rA   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_xpmrq   r$   r"   rÑ  rÑ  a  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ˆ fd„Zd„ Zˆ xZS )ÚFigureFrameWxc                ó´  •— t           j        dk    rt           j        }nt          j        dd¦  «        }t	          ¦   «                              d d|¬¦  «         t                               dt          | ¦  «        ¦  «         t          | ¦  «          || d|¦  «        | _
        t          | j
        || ¦  «        }| j
        j        j        }|�|                      |¦  «         t          t           j        |j        j        ¦  «        \  }}| j
                             |                      t          j        ||¦  «        ¦  «        ¦  «         | j
                             ¦   «          |                      ¦   «          | j
                             |                      t          j        dd¦  «        ¦  «        ¦  «         |                      t           j        | j        ¦  «         d S )Nrf  é   éÿÿÿÿ)r¢  r£  rR  rd   rˆ   )r   rn  ÚDefaultPositionÚPointr-   r.   re   rf   rg   Ú_set_frame_iconrë  r4  ÚmanagerÚtoolbarÚ
SetToolBarrk  rÃ   rl  rº   rå   rŸ  ro  rj  ÚSetFocusÚFitÚ
SetMinSizerw  Ú	EVT_CLOSEÚ	_on_close)
r/   ÚnumÚfigÚcanvas_classrR  rò  ró  r   r€   r2   s
            €r"   r.   zFigureFrameWx.__init__’  sv  ø€ õ Œ;˜+Ò%Ð%ÝÔ$ˆCˆCå”(˜2˜rÑ"Ô"ˆCÝ‰Œ×Ò ¨°ÐÑ5Ô5Ð5å�
Š
Ð$¥d¨4¡j¤jÑ1Ô1Ð1Ý˜ÑÔÐà"�l 4¨¨SÑ1Ô1ˆŒå! $¤+¨s°DÑ9Ô9ˆà”+Ô%Ô-ˆØÐØ�OŠO˜GÑ$Ô$Ð$õ •4”9˜cœhœmÑ,Ô,‰ˆˆ1ØŒ×"Ò" 4§<¢<µ´¸¸1±´Ñ#>Ô#>Ñ?Ô?Ð?ØŒ×ÒÑÔÐð 	�Š‰
Œ
ˆ
ØŒ×Ò˜tŸ|š|­B¬G°A°q©M¬MÑ:Ô:Ñ;Ô;Ð;à�	Š	•"”, ¤Ñ/Ô/Ð/Ð/Ð/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)re   rf   rg   r   rë  r  rÆ  rò  Úframer   ÚdestroyÚmpl_disconnectró  Ú_id_dragÚAttributeErrorrX  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)r?   r@   rA   r.   rù  rC   rD   s   @r"   rë  rë  ‘  sH   ø€ € € € € ð#0ð #0ð #0ð #0ð #0ðJð ð ð ð ð ð r$   rë  c                   óv   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zd„ Zˆ fd„Z	d„ Z
d„ Zd	„ Zd
„ Zˆ xZS )r4  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 )Nrd   )re   rf   rg   rÿ  Úwindowr-   r.   )r/   rë  rú  rÿ  r2   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 )N)rü  )r   ÚGetAppr#   rë  rë  rò  ÚmplÚis_interactiverÿ  ÚShowrº  )r5  rü  rm  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 r(   )r   r   ÚIsMainLoopRunningr  ÚMainLoop)r5  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ÚRaiser7   s    r"   ÚshowzFigureManagerWx.showî  s\   € àŒ
�ŠÑÔÐØŒ×ÒÑÔÐÝŒ<Ð-Ô.ð 	ØŒJ×ÒÑÔÐÐÐð	ð 	r$   c                 óÜ   •— t                                dt          | ¦  «        ¦  «         | j        }|rt	          j        |j        ¦  «         t          ¦   «                              ¦   «          d S )Nz%s - destroy())	re   rf   rg   rÿ  r   Ú	CallAfterr­  r-   r   )r/   r0   rÿ  r2   s      €r"   r   zFigureManagerWx.destroyõ  s[   ø€ å�
Š
Ð#¥T¨$¡Z¤ZÑ0Ô0Ð0Ø”
ˆØð 	&õ ŒL˜œÑ%Ô%Ð%Ý‰Œ�ŠÑÔÐÐÐr$   c                 ój   — | j                              | j                              ¦   «          ¦  «         d S r(   )rÿ  ÚShowFullScreenÚIsFullScreenr7   s    r"   Úfull_screen_togglez"FigureManagerWx.full_screen_toggleÿ  s/   € àŒ
×!Ò! d¤j×&=Ò&=Ñ&?Ô&?Ð"?Ñ@Ô@Ð@Ð@Ð@r$   c                 ó4   — | j                              ¦   «         S r(   )r  ÚGetTitler7   s    r"   Úget_window_titlez FigureManagerWx.get_window_title  s   € àŒ{×#Ò#Ñ%Ô%Ð%r$   c                 ó:   — | j                              |¦  «         d S r(   )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 r(   )r  ÚSetSizeÚClientToWindowSizer   rj  rÃ   rl  )r/   ri   rk   s      r"   ÚresizezFigureManagerWx.resize  sc   € ð 	Œ×Ò˜DœK×:Ò:½2¼7ÝŒI�eÑÔ�dœi¨Ñ/Ô/ñ<1ô <1ñ 2ô 2ñ 	3ô 	3ð 	3ð 	3ð 	3r$   )r?   r@   rA   rB   r.   Úclassmethodr  r  r  r   r  r  r!  r%  rC   rD   s   @r"   r4  r4  È  sß   ø€ € € € € ðð ð&ð &ð &ð &ð &ð
 ðð ñ „[ðð ð!ð !ñ „[ð!ðð ð ðð ð ð ð ðAð Að Að&ð &ð &ð$ð $ð $ð3ð 3ð 3ð 3ð 3ð 3ð 3r$   r4  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_bitmapr+    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ÚIconr+  Ú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|¬¦  «         t           j        dk    r<|                      |                      ¦   «         |                      ¦   «         z  ¦  «         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        ¦  «         |                      ¦   «          t7          j        | |¦  «         d S )Nrî  r7  ri  ú.svg)ÚPanÚZoom)rl   ÚbmpDisabledÚlabelÚ	shortHelpÚkindrÀ  )r   ÚToolBarr.   r	  rn  ÚSetToolBitmapSizeÚGetToolBitmapSizerž  Úwx_idsÚ	toolitemsÚAddSeparatorÚAddToolÚ_iconr  Ú
ITEM_CHECKÚITEM_NORMALÚIdrw  Ú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__%  s¿  € Ý
Œ
×Ò˜D &×"2Ò"2Ñ"4Ô"4°bÀÐÑFÔFÐFÝŒ;˜+Ò%Ð%Ø×"Ò" 4×#9Ò#9Ñ#;Ô#;¸D×<RÒ<RÑ<TÔ<TÑ#TÑUÔUÐUàˆŒØ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                             ¦   «                              ¦   «         }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t          j        d| ¦  «        }|j        dk    r||                     ¦   «         }|r|                     dd	¦  «        }t          j        ¦   «                              t           j        ¦  «        }t           j                             ||¦  «        S t*          j                             |¦  «        }	t1          j        |	                     d
¦  «        ¦  «        }
|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.
        g‰A`åÐ"Ó?gbX9´Èâ?gÉv¾Ÿ/½?r%  gš™™™™™É?r(  r9  s   fill:black;s   fill:white;ÚRGBA.Nr‡   r   rî  )Úaxisr   )#r   ÚSystemSettingsÚGetAppearanceÚIsDarkr  Ú	GetColourÚSYS_COLOUR_WINDOWÚSYS_COLOUR_WINDOWTEXTÚredÚgreenÚbluer   r*  ÚsuffixÚ
read_bytesÚreplaceÚArtProviderÚGetDIPSizeHintÚART_TOOLBARÚBitmapBundleÚFromSVGÚPILÚImageÚopenÚnpÚarrayÚconvertÚallÚRedÚGreenÚBluer²   r³   r±   r´   )rG   ÚdarkÚbgr  Úbg_lumÚfg_lumr�   ÚsvgÚtoolbarIconSizeÚpilimgr3  Ú
black_masks               r"   rG  zNavigationToolbar2Wx._iconE  s5  € ð		(ÝÔ$×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ð	(øøøõ Ô# H¨dÑ3Ô3ˆØŒ;˜&Ò Ð Ø—/’/Ñ#Ô#ˆCØð BØ—k’k .°.ÑAÔA�Ý œnÑ.Ô.×=Ò=½b¼nÑMÔMˆOÝ”?×*Ò*¨3°Ñ@Ô@Ð@å”Y—^’^ DÑ)Ô)ˆFå”H˜VŸ^š^¨FÑ3Ô3Ñ4Ô4ˆEØð JÝÔ&×0Ò0µÔ1IÑJÔJ�Ø# C¨¨!¨ Gœn°Ò1×6Ò6¸BÐ6Ñ?Ô?�
Ø)+¯ª©¬°2·8²8±:´:¸r¿wºw¹y¼yÐ(I��j " 1 "�nÑ%Ý”9×+Ò+Ø”˜A” ¤¨A¤°·²±´ñAô Að As   ‚03 ³B+C!Ã C!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 )Nr:  ÚPANr;  ÚZOOM)rC  Ú
ToggleToolÚmoderG   r7   s    r"   Ú_update_buttons_checkedz,NavigationToolbar2Wx._update_buttons_checkedi  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 r(   )r-   Úzoomrƒ  ©r/   r0   r2   s     €r"   r…  zNavigationToolbar2Wx.zoomo  s.   ø€ Ø�‰ŒŒ�dÐÐØ×$Ò$Ñ&Ô&Ð&Ð&Ð&r$   c                 ó\   •—  t          ¦   «         j        |Ž  |                      ¦   «          d S r(   )r-   Úpanrƒ  r†  s     €r"   rˆ  zNavigationToolbar2Wx.pans  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                             ||¬¦  «         |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¢  ÚmessageÚcaption)rë  ræ  Úget_default_filenamer   Ú
FileDialogr	  r	  r  ÚFD_SAVEÚFD_OVERWRITE_PROMPTÚSetFilterIndexÚ	ShowModalÚID_OKÚpathlibr   ÚGetPathre   rf   rg   ÚGetFilterIndexrd  Úget_supported_filetypesÚwarningr)  r¢  rm  ÚsavefigÚ	ExceptionÚMessageDialogr  )r/   r0   rÝ  rã  rá  Údefault_fileÚdialogr�   ÚfmtrÓ  Úes              r"   Úsave_figurez NavigationToolbar2Wx.save_figurew  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                              d¬¦  «        d         }t          j        dk    rdn| j                              ¦   «         }||z  ||z
  |z  ||z  ||z
  |z  f| j         _        | j                              ¦   «          d S )NTrL  r   rf  )rë  rQ  r   rn  rž  rr  r¹  )r/   r®  rò  ró  rô  rõ  rk   Úsfs           r"   Údraw_rubberbandz$NavigationToolbar2Wx.draw_rubberband™  s�   € Ø”×-Ò-°tÐ-Ñ<Ô<¸QÔ?ˆÝ”+ Ò,Ð,ˆQˆQ°$´+×2OÒ2OÑ2QÔ2QˆØ(*¨2©°¸±¸RÑ/?Ø(*¨2©°¸±¸RÑ/?ð(AˆŒÔ$àŒ×ÒÑÔÐÐÐr$   c                 óP   — d | j         _        | j                              ¦   «          d S r(   )rë  rr  r¹  r7   s    r"   Úremove_rubberbandz&NavigationToolbar2Wx.remove_rubberband   s&   € Ø'+ˆŒÔ$ØŒ×ÒÑÔÐÐÐr$   c                 óL   — | j         r| j                             |¦  «         d S d S r(   )rL  rP  ÚSetLabel©r/   r{   s     r"   Úset_messagez NavigationToolbar2Wx.set_message¤  s4   € ØÔð 	)ØÔ×%Ò% aÑ(Ô(Ð(Ð(Ð(ð	)ð 	)r$   c                 ó  — | j         j        dk    }| j         j        t          | 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ÚlenrC  Ú
EnableTool)r/   Úcan_backwardÚcan_forwards      r"   Úset_history_buttonsz(NavigationToolbar2Wx.set_history_buttons¨  s�   € Ø”Ô+¨aÒ/ˆØ”oÔ*­S°´Ñ-AÔ-AÀAÑ-EÒEˆØ�T”[Ð Ð Ø�OŠO˜DœK¨Ô/°Ñ>Ô>Ð>Ø˜œÐ#Ð#Ø�OŠO˜DœK¨	Ô2°KÑ@Ô@Ð@Ð@Ð@ð $Ð#r$   r•  )r?   r@   rA   r   Ú	TB_BOTTOMr.   ró   rG  rƒ  r…  rˆ  r   r£  r¥  r©  r³  rC   rD   s   @r"   r6  r6  $  sø   ø€ € € € € ð2¸"¼,ð 2ð 2ð 2ð 2ð 2ð@ ð!Að !Añ „\ð!AðFKð Kð Kð'ð 'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð 'ð !ð  !ð  !ðDð ð ðð ð ð)ð )ð )ðAð Að Að Að Að Að Ar$   r6  c                   óF   — e Zd ZdZdej        fd„Zd„ Zd„ Zd„ Z	d„ Z
d„ ZdS )	Ú	ToolbarWxr9  Nc                 óx  — |€|j                              ¦   «         }t          j        | |¦  «         t          j                             | |d|¬¦  «         |                      ¦   «         | _        t	          j        | t          j	        ¬¦  «        | _
        |                      | j
        ¦  «         i | _        i | _        d S )Nrî  r7  )rë  r	  r   r.   r   r@  rM  Ú_spacerN  rO  rP  rQ  Ú
_toolitemsÚ_groups)r/   Útoolmanagerr¢  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              3   óN   •K  — | ]}‰                      |¦  «        ‰k    ¯|V — Œ d S r(   )ÚGetToolByPos)r&  rR  r/   Útools     €€r"   ú	<genexpr>z*ToolbarWx._get_tool_pos.<locals>.<genexpr>È  sG   øè è € ð 3ð 3˜Ø×$Ò$ SÑ)Ô)¨TÒ1Ð1ð Ø1Ð1Ð1Ð1ð3ð 3r$   )ÚrangeÚ
ToolsCount)r/   r¿  rR  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 rq   )ÚIsSeparatorÚIsStretchableSpace)r&  Úts     r"   r'  z*ToolbarWx.add_toolitem.<locals>.<listcomp>Ô  sP   € ð Cð Cð C�aØ—=’=‘?”?ðCØ+,×+?Ò+?Ñ+AÔ+AðC�ð Cð Cð Cr$   r   r   rî  Ú é
   rg  ©r=  c                 ó2   •— ‰                      ‰¦  «         d S r(   )Útrigger_tool)r®  rG   r/   s    €€r"   Úhandlerz'ToolbarWx.add_toolitem.<locals>.handlerî  s   ø€ Ø×Ò˜dÑ#Ô#Ð#Ð#Ð#r$   )rº  ÚInsertSeparatorrÃ  r¸  rk  r¾  rÁ  rÂ  Úindexr6  rG  r   rI  rH  Ú
InsertToolr  ÚGetTextExtentÚToggleButtonÚButtonÚInsertControlrR  rw  rK  r€  r¹  Ú
setdefaultrÛ  )r/   rG   ÚgroupÚpositionrV  ÚdescriptionÚtoggleÚsepÚsepsÚstartÚidxrñ  r?  r¿  rå   r7  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 r(   )r¹  Ú	IsControlr�  rJ  Ú
GetControlÚSetValuer¹  )r/   rG   Ú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                 ó|   — | j                              |g ¦  «        D ]\  }}|                      |j        ¦  «         Œ d S r(   )r¹  ÚpopÚ
DeleteToolrJ  )r/   rG   r¿  rÎ  s       r"   Úremove_toolitemzToolbarWx.remove_toolitem  sH   € Ø!œ_×0Ò0°°rÑ:Ô:ð 	%ð 	%‰MˆD�'Ø�OŠO˜DœGÑ$Ô$Ð$Ð$ð	%ð 	%r$   c                 ó:   — | j                              |¦  «         d S r(   )rP  r§  r¨  s     r"   r©  zToolbarWx.set_message  s   € ØÔ×!Ò! !Ñ$Ô$Ð$Ð$Ð$r$   )r?   r@   rA   Ú_icon_extensionr   r´  r.   rÃ  rß  rå  ré  r©  rq   r$   r"   r¶  r¶  ³  s€   € € € € € Ø€Oà+/°r´|ð 	ð 	ð 	ð 	ð	ð 	ð 	ð+6ð +6ð +6ðZð ð ð%ð %ð %ð%ð %ð %ð %ð %r$   r¶  c                   ó   — e Zd Zd„ ZdS )ÚConfigureSubplotsWxc                 ó:   — t                                | ¦  «         d S r(   )r6  Úconfigure_subplots©r/   r0   s     r"   ÚtriggerzConfigureSubplotsWx.trigger  s   € Ý×/Ò/°Ñ5Ô5Ð5Ð5Ð5r$   N©r?   r@   rA   rñ  rq   r$   r"   rí  rí    s#   € € € € € ð6ð 6ð 6ð 6ð 6r$   rí  c                   ó   — e Zd Zd„ ZdS )ÚSaveFigureWxc                 ó^   — t                                |                      ¦   «         ¦  «         d S r(   )r6  r   Ú"_make_classic_style_pseudo_toolbarrð  s     r"   rñ  zSaveFigureWx.trigger  s3   € Ý×(Ò(Ø×3Ò3Ñ5Ô5ñ	7ô 	7ð 	7ð 	7ð 	7r$   Nrò  rq   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 r(   )r6  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 r(   )r6  r¥  rö  r7   s    r"   r¥  zRubberbandWx.remove_rubberband  s3   € Ý×.Ò.Ø×3Ò3Ñ5Ô5ñ	7ô 	7ð 	7ð 	7ð 	7r$   N)r?   r@   rA   r£  r¥  rq   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)rN   éŒ   rP   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Ë  )r-   r.   r   ÚDEFAULT_DIALOG_STYLEÚRESIZE_BORDERÚBoxSizerÚVERTICALÚFlexGridSizerÚGetFontÚMakeBoldrÙ  ÚheadersÚzipÚwidthsrN  rx   ÚWrapÚAddÚALLrÔ  r“  ÚALIGN_CENTER_HORIZONTALÚSetSizerrö  ÚLayoutrw  rø  rù  Ú
EVT_BUTTON)r/   r¢  Úhelp_entriesÚsizerÚ
grid_sizerrV   ÚrÚrowÚcolri   r=  Úokr2   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 r(   )rü  Ú	_instanceÚDestroyLaterrX  rÏ  s     r"   rù  z_HelpDialog._on_closeA  s-   € Ø $�ÔØ×ÒÑÔÐØ�
Š
‰Œˆˆˆr$   c                 óž   — | j         r| j                              ¦   «          d S  | ||¦  «        | _         | j                              ¦   «          d S r(   )r  r  r  )r5  r¢  r  s      r"   r  z_HelpDialog.showF  sT   € ð Œ=ð 	ØŒM×ÒÑ!Ô!Ð!ØˆFØ˜˜F LÑ1Ô1ˆŒØŒ×ÒÑÔÐÐÐr$   )r?   r@   rA   r  r  r  r.   rù  r&  r  rC   rD   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 r(   )rü  r  rm  rë  ÚGetTopLevelParentÚ_get_help_entriesrð  s     r"   rñ  zHelpWx.triggerR  sF   € Ý×Ò˜œÔ+×=Ò=Ñ?Ô?Ø×/Ò/Ñ1Ô1ñ	3ô 	3ð 	3ð 	3ð 	3r$   Nrò  rq   r$   r"   r"  r"  P  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r(   )rë  rq  r³  rl   r/  r   r¨  rª  r«  r¦  r­  r´  s      r"   rñ  zToolCopyToClipboardWx.triggerY  sµ   € ØŒ{Ô#ð 	ØŒK×ÒÑÔÐØŒ{Ô!×&Ò&Ñ(Ô(ð 	µ´×0DÒ0DÑ0FÔ0Fð 	ØˆFð	$ÝŒO×#Ò#¥BÔ$7¸¼Ô8JÑ$KÔ$KÑLÔLÐLåŒO×!Ò!Ñ#Ô#Ð#Ð#Ð#ø�BŒO×!Ò!Ñ#Ô#Ð#Ð#øøøs   Á%;C  Ã  C Nrò  rq   r$   r"   r'  r'  W  s#   € € € € € ð$ð $ð $ð $ð $r$   r'  c                   ó$   — e Zd ZeZeZej        ZdS )Ú
_BackendWxN)	r?   r@   rA   rÑ  ÚFigureCanvasr4  ÚFigureManagerr  Úmainlooprq   r$   r"   r*  r*  h  s    € € € € € à!€LØ#€MØÔ.€H€H€Hr$   r*  )OrB   rÚ  ÚloggingrÃ   r”  r  r/  Únumpyro  Ú	PIL.Imagerl  Ú
matplotlibr	  Úmatplotlib.backend_basesr   r   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   Úwx.svgÚ	getLoggerr?   re   rç   Ú	lru_cacher#   r&   Ú
deprecatedrM   rÑ   rp  r2  rÑ  ÚFramerë  r4  r+  rñ  r@  r6  r¶  Ú_register_tool_classÚConfigureSubplotsBaserí  ÚSaveFigureBaserô  ÚRubberbandBaserø  ÚDialogrü  ÚToolHelpBaser"  ÚToolCopyToClipboardBaser'  Ú_toolbar2_classÚ_toolmanager_toolbar_classÚexportr*  rq   r$   r"   ú<module>rE     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ð EÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø *Ð *Ð *Ð *Ð *Ð *à 	€	€	€	Ø €€€à€wÔ˜Ñ"Ô"€ð
 €ð €Ô�QÑÔðð ñ Ôðð ð  ð  ð  ð  ˆiñ  ô  ð  ð& €„Ø	�˜y°,ØØFðHñ Hô HðLCð LCð LCð LCð LC�ñ LCô LCñ	Hô HðLCð^j9ð j9ð j9ð j9ð j9Ð+ñ j9ô j9ð j9ðZU1ð U1ð U1ð U1ð U1Ð*¨B¬Hñ U1ô U1ð U1ðp-*ð -*ð -*ð -*ð -*Ð(ñ -*ô -*ð -*ð`4ð 4ð 4ð 4ð 4�B”Hñ 4ô 4ð 4ðnG3ð G3ð G3ð G3ð G3Ð'ñ G3ô G3ð G3ðTDð Dð Dðð ð ðJAð JAð JAð JAð JAÐ-¨r¬zñ JAô JAð JAð^U%ð U%ð U%ð U%ð U%Ð! 2¤:ñ U%ô U%ð U%ðp $€Ô#Ð$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$   