+
    in              	          R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t
^ RIt^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHtHtHtH t  ^ RI!H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI't'^ RI(t']PR                  ! ]*4      t+^Kt,]PZ                  ! ^4      R 4       t. ! R R	]4      t/]P`                  ! R
RRRRRR7       ! R R]4      4       t1 ! R R]4      t2 ! R R]]'Pf                  4      t4 ! R R]44      t5 ! R R]'Pl                  4      t7 ! R R]4      t8R t9R t: ! R R ]]'Pv                  4      t< ! R! R"]]'Pv                  4      t=]P|                  ! ]44       ! R# R$]P~                  4      4       t@]P|                  ! ]44       ! R% R&]P                  4      4       tB]P|                  ! ]44       ! R' R(]P                  4      4       tD ! R) R*]'P                  4      tF]P|                  ! ]44       ! R+ R,]P                  4      4       tH]P|                  ! ]44       ! R- R.]P                  4      4       tJ]<]8nK        ]=]8nL        ]P                   ! R/ R0]4      4       tNR# )1z
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)Affine2Dc                      \         P                  ! R 4      p V P                  R4       \        P                  ! 4        \
        P                  ! 4        V # )FT)wxAppSetExitOnFrameDeleter   _setup_new_guiappr    Win32_SetProcessDpiAwareness_max)wxapps    ~/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/matplotlib/backends/backend_wx.py_create_wxappr    ,   s:    FF5ME	t$	668L    c                   H   a a ] tR t^6t oRtV 3R ltR tR tR tRt	Vt
V ;t# )TimerWxz/Subclass of `.TimerBase` using wx.Timer events.c                   < \         P                  ! 4       V n        V P                  V P                  n        \
        SV `  ! V/ VB  R # N)r   Timer_timer	_on_timerNotifysuper__init__)selfargskwargs	__class__s   &*,r   r+   TimerWx.__init__9   s2    hhj!^^$)&)r!   c                f    V P                   P                  V P                  V P                  4       R # r%   )r'   Start	_interval_singler,   s   &r   _timer_startTimerWx._timer_start>   s    $..$,,7r!   c                :    V P                   P                  4        R # r%   )r'   Stopr5   s   &r   _timer_stopTimerWx._timer_stopA   s    r!   c                j    V P                   P                  4       '       d   V P                  4        R # R # r%   )r'   	IsRunningr6   r5   s   &r   _timer_set_intervalTimerWx._timer_set_intervalD   s&    ;;  "" #r!   )r'   )__name__
__module____qualname____firstlineno____doc__r+   r6   r:   r>   __static_attributes____classdictcell____classcell__r/   __classdict__s   @@r   r#   r#   6   s!     9*
8   r!   r#   z2.0r   backendz
the futurewxaggz7See the Matplotlib usage FAQ for more info on backends.)nameobj_typeremovalalternativeaddendumc                   \  a a ] tR t^It oRt/ ^d]P                  b^]P                  bR]P                  bR]P                  bR]P                  bR]P                  bR]P                  bR]P                  bR]P                  bR	]P                  bR
]P                  bR]P                  bR]P                  bR]P                  bR]P                  bR]P                  bR]P                  bR]P                  /Ct	R]P                  R]P                  R]P                  /tR]P                  R]P                  R]P                   R]P"                  R]P$                  R]P$                  R]P$                  /tV 3R ltR tR tR tR t]R  4       tR(R! ltR" tR)R# ltR$ tR% tR& t R't!Vt"V ;t## )*
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.
,  i  i  iX  i  i   i  
ultralightlightnormalmediumsemiboldboldheavy	ultraboldblackitalicobliqueSansRomanScript
DecorativeModernCouriercourierc                   < \         SV `  4        \        P                  R\	        V 4      4       VP                  4       V n        VP                  4       V n        Wn	        / V n
        W n        RV n        R# )z)Initialise a wxWindows renderer instance.%s - __init__()N)r*   r+   _logdebugtypeGetWidthwidth	GetHeightheightbitmapfontddpigc)r,   ro   rq   r/   s   &&&r   r+   RendererWx.__init__   sW    

$d4j1__&
&&(
r!   c                    R # T r5   s   &r   flipyRendererWx.flipy   s    r!   c                >   V'       d   \         P                  ! V4      pV P                  f   V P                  4       pMV P                  pVP                  pV P                  W4      pVP                  V\        P                  4       VP                  V4      w  rxrWxV	3# r%   )
r   
strip_mathrr   new_gcgfx_ctxget_wx_fontSetFontr   BLACKGetFullTextExtent)r,   spropismathrr   r|   fontwhdescentleadings   &&&&       r   get_text_width_height_descent(RendererWx.get_text_width_height_descent   s~       #A77?BB**(bhh'!(!:!:1!=gW}r!   c                2    V P                   V P                  3# r%   )rl   rn   r5   s   &r   get_canvas_width_height"RendererWx.get_canvas_width_height   s    zz4;;&&r!   c                Z   VP                  4       pVe   VP                  pVP                  pVP                  V8w  dn   W#n        Vf   VP	                  4        R # VP                  V^ ,          V P                  V^,          ,
          V^,          ,
          V^,          V^,          4       R # R # r%   )get_clip_rectangleboundsr|   _lastcliprect	ResetClipCliprn   )r,   rr   
new_boundsr|   s   &&  r   handle_clip_rectangle RendererWx.handle_clip_rectangle   s    **,
!#**J**  J.$.!!!!#Z]![[:a=8:a=H']JqM; /r!   c                   V P                  4       pVP                  V4       F  w  rEV\        P                  8X  d   VP                  ! V!   K,  V\        P
                  8X  d   VP                  ! V!   KS  V\        P                  8X  d   VP                  ! V!   Kz  V\        P                  8X  d   VP                  ! V!   K  V\        P                  8X  g   K  VP                  4        K  	  V# r%   )
CreatePathiter_segmentsr   MOVETOMoveToPointLINETOAddLineToPointCURVE3AddQuadCurveToPointCURVE4AddCurveToPoint	CLOSEPOLYCloseSubpath)r|   path	transformwxpathpointscodes   &&&   r   convert_pathRendererWx.convert_path   s    ##% ..y9LFt{{"""F+$%%v.$**F3$&&/'##% : r!   c                   VP                  4        V P                  V4       VP                  pV\        4       P	                  R R4      P                  RV P                  4      ,           pV P                  WRV4      pVeG   VP                  \        P                  ! VP                  V4      4      4       VP                  V4       MVP                  V4       VP                  4        R# )g      ?        Ng      )selectr   r|   r   scale	translatern   r   SetBrushr   Brushget_wxcolourDrawPath
StrokePathunselect)r,   rr   r   r   rgbFacer|   r   s   &&&&&  r   	draw_pathRendererWx.draw_path   s    
		""2&**JS$'11#t{{CD	""7)<RXXboog&>?@V$v&
r!   c           	        VP                  4       pVe   VP                  w  rgrM^ p^ pV P                  pV P                  p	VP                  R,          w  r\
        P                  P                  WVP                  4       4      pVP                  4        VP                  P                  V\        V4      \        V P                  V,
          4      \        V4      \        V	) 4      4       VP                  4        R # )N:N   N)r   r   rl   rn   shaper   BitmapFromBufferRGBAtobytesr   r|   
DrawBitmapintr   )r,   rr   xyimbboxlbr   r   rowscolsro   s   &&&&&        r   
draw_imageRendererWx.draw_image   s    $$&JA!QAA

AAXXb\
))$bjjlC
		


fc!fc$++/.B!!fc1"g	/
r!   c	                   V'       d   \         P                  ! V4      p\        P                  R \	        V 4      4       VP                  4        V P                  V4       VP                  p	V P                  WE4      p
VP                  VP                  4       4      pV	P                  W4       V P                  WEV4      w  rp\        V4      p\        W=,
          4      pVR8X  d   V	P                  WBV4       Mq\        P                   ! V4      pV\        P"                  ! V4      ,          pV\        P$                  ! V4      ,          pV	P'                  WBV,
          VV,
          V4       VP)                  4        R# )z%s - draw_text()r   N)r   rz   rh   ri   rj   r   r   r|   r}   r   get_rgbr~   r   r   DrawTextmathradianssincosDrawRotatedTextr   )r,   rr   r   r   r   r   angler   mtextr|   r   colorr   r   dradsxoyos   &&&&&&&&&         r   	draw_textRendererWx.draw_text   s      #A

%tDz2
		""2&**(

-$44QfEaFJC<Q1%<<&DTXXd^#BTXXd^#B##A2vq2vt<
r!   c                    \         P                  R \        V 4      4       \        V P                  V 4      V n        V P
                  P                  4        V P
                  P                  4        V P
                  # )z%s - new_gc())rh   ri   rj   GraphicsContextWxro   rr   r   r   r5   s   &r   r{   RendererWx.new_gc   sM    

?DJ/#DKK6wwr!   c                &   \         P                  R\        V 4      4       \        V4      pV P                  P                  V4      pVe   V# V P                  VP                  4       4      p\        P                  ! \        V4      V P                  P                  VP                  4       \        P                  4      V P                  VP                  4       ,          V P                   VP#                  4       ,          R7      ;V P                  V&   pV# )z7Return a wx font.  Cache font instances for efficiency.z%s - get_wx_font())	pointSizefamilystyleweight)rh   ri   rj   hashrp   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}   RendererWx.get_wx_font  s    

'd44jzz~~c"K$$T%<%<%>? "$Dk>>%%dmmorxx@//$.."23##DOO$56	"8 	8

3$
 r!   c                Z    V\         R ,          V P                  ,          R ,          ,          # )g      R@)PIXELS_PER_INCHrq   )r,   r   s   &&r   r   RendererWx.points_to_pixels  s     4/$((:TABBr!   )ro   rq   rp   rr   rn   rl   r%   )FN)$r@   rA   rB   rC   rD   r   FONTWEIGHT_LIGHTFONTWEIGHT_NORMALFONTWEIGHT_BOLDr   FONTSTYLE_ITALICFONTSTYLE_NORMALFONTSTYLE_SLANTr   FONTFAMILY_SWISSFONTFAMILY_ROMANFONTFAMILY_SCRIPTFONTFAMILY_DECORATIVEFONTFAMILY_MODERNr   r+   rw   r   r   r   staticmethodr   r   r   r   r{   r}   r   rE   rF   rG   rH   s   @@r   rR   rR   I   s#    
R  R   	R   	R!!	
 	R!! 	R!! 	R 	R 	R 	b)) 	$$ 	"&& 	"&& 	B(( 	""  	##!" 	R''#$ 	##%K* 	"%%"%%2%%J 	##$$"&&b.."&&2''2''I	"';   8"C Cr!   rR   c                   6  a a ] tR tRt oRtR]P                  R]P                  R]P                  /t	R]P                  R]P                  R]P                  /t]P                  ! 4       tV 3R ltR	 tR
 tRV 3R lltV 3R ltV 3R ltV 3R ltR tRtVtV ;t# )r   i  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miterc                  < \         SV `  4        \        P                  R \	        V 4      V4       V P
                  P                  VR4      w  r4VfM   \        P                  ! V4      p\        P                  P                  V4      pRVn        W43V P
                  V&   Wn        W0n        W@n        \        P                  ! R^\        P                   4      V n        VP%                  V P"                  4       W n        R# )z%s - __init__(): %sNr   )NN)r*   r+   rh   ri   rj   _cacher   r   MemoryDCGraphicsContextCreater   ro   dcr|   PenSOLID_penSetPenrenderer)r,   ro   r  r  r|   r/   s   &&&  r   r+   GraphicsContextWx.__init__4  s    

($t*f=kkoofl;:V$B((//3G$(G!"$+DKKFF7Arxx0	tyy! r!   c                    \         P                  R8X  d/   V P                  P                  V P                  4       RV n        R# R# )z2Select the current bitmap into this wxDC instance.win32TN)sysplatformr  SelectObjectro   
IsSelectedr5   s   &r   r   GraphicsContextWx.selectG  s0    <<7"GG  -"DO #r!   c                    \         P                  R8X  d3   V P                  P                  \        P
                  4       RV n        R# R# )z-Select a Null bitmap into this wxDC instance.r  FN)r  r  r  r  r   
NullBitmapr  r5   s   &r   r   GraphicsContextWx.unselectM  s0    <<7"GG  /#DO #r!   c                ^  < \         P                  R \        V 4      4       V P                  4        \        SV `  W4       V P                  P                  V P                  V P                  4       4      4       V P                  P                  V P                  4       V P                  4        R# )z%s - set_foreground()N)rh   ri   rj   r   r*   set_foregroundr  	SetColourr   r   r|   r  r   )r,   fgisRGBAr/   s   &&&r   r   GraphicsContextWx.set_foregroundS  sp     	

*DJ7r*		D--dlln=>DII&r!   c                  < \        V4      p\        P                  R \        V 4      4       V P	                  4        ^ Tu;8  d   ^8  d   M M^p\
        SV `  V4       \        V P                  P                  V P                  4      4      pV^ 8X  d   ^pV P                  P                  V4       V P                  P                  V P                  4       V P                  4        R# )z%s - set_linewidth()N)floatrh   ri   rj   r   r*   set_linewidthr   r  r   
_linewidthr  SetWidthr|   r  r   )r,   r   lwr/   s   && r   r&  GraphicsContextWx.set_linewidthb  s    !H

)4:6q919Aa //@A7B		2DII&r!   c                b  < \         P                  R \        V 4      4       V P                  4        \        SV `  V4       V P                  P                  \        P                  V P                  ,          4       V P                  P                  V P                  4       V P                  4        R# )z%s - set_capstyle()N)rh   ri   rj   r   r*   set_capstyler  SetCapr   _capd	_capstyler|   r  r   )r,   csr/   s   &&r   r,  GraphicsContextWx.set_capstyleq  sm    

($t*5R 		*00@ADII&r!   c                b  < \         P                  R \        V 4      4       V P                  4        \        SV `  V4       V P                  P                  \        P                  V P                  ,          4       V P                  P                  V P                  4       V P                  4        R# )z%s - set_joinstyle()N)rh   ri   rj   r   r*   set_joinstyler  SetJoinr   _joind
_joinstyler|   r  r   )r,   jsr/   s   &&r   r3  GraphicsContextWx.set_joinstylez  sm    

)4:6b!		+224??CDDII&r!   c           	         \         P                  R\        V 4      4       \        P                  ! V Uu. uF  p\        ^V,          4      NK  	  up!  # u upi )z'Convert an RGB(A) color to a wx.Colour.z%s - get_wx_color())rh   ri   rj   r   Colourr   )r,   r   r   s   && r   r   GraphicsContextWx.get_wxcolour  s>    

($t*5yy7A3sQw<7887s   A)r  r  ro   r  r|   r  r%   )r@   rA   rB   rC   rD   r   CAP_BUTTCAP_PROJECTING	CAP_ROUNDr.  
JOIN_BEVEL
JOIN_MITER
JOIN_ROUNDr5  weakrefWeakKeyDictionaryr	  r+   r   r   r  r&  r,  r3  r   rE   rF   rG   rH   s   @@r   r   r     s      R[[2,,bll$E r}}r}}r}}&F &&(F!&#$9 9r!   r   c                   2  a  ] tR tRt o RtRt]t]P                  ! R 4      t
/ ]P                  Rb]P                  Rb]P                  Rb]P                  Rb]P                   R	b]P"                  R
b]P$                  Rb]P&                  Rb]P(                  Rb]P*                  Rb]P,                  Rb]P.                  Rb]P0                  Rb]P2                  Rb]P4                  Rb]P6                  Rb]P8                  Rb/ ]P:                  Rb]P<                  Rb]P>                  Rb]P@                  Rb]PB                  Rb]PD                  Rb]PF                  Rb]PH                  Rb]PJ                  Rb]PL                  Rb]PN                  R b]PP                  R!b]PR                  R"b]PT                  R#b]PV                  R$b]PX                  R%b]PZ                  R&bC/ ]P\                  R'b]P^                  R(b]P`                  R)b]Pb                  R*b]Pd                  R+b]Pf                  R,b]Ph                  R-b]Pj                  R.b]Pl                  R/b]Pn                  R0b]Pp                  R1b]Pr                  R2b]Pt                  Rb]Pv                  R
b]Px                  Rb]Pz                  Rb]P|                  R	bC]P~                  R"]P                  R#]P                  R ]P                  R!]P                  R]P                  R/CtER]R4 ltFR]R5 ltGR6 tHR7 tIR8 tJR^R9 ltKR]R: ltLR; tMR]R< ltN/ ]OP                  CR=R>R?R@RAR@RBRCRDRERFRGRHRGRIRJ/CtPRK tQRL tR]SRM 4       tT]SR]RNR3/RO ll4       tURP tVR]RQ ltWRR tXRS tYRT tZR_RU lt[RV t\RW t]RX t^RY t_RZ t`R[ taR\tbV tcR3# )`_FigureCanvasWxBasei  aI  
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                    \         # r%   )FigureManagerWx)clss   &r   <lambda>_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                   \         P                  ! W4       \        P                  ! \	        \
        P                  V P                  P                  P                  4      !  p\        P                  R8w  d   VP                  V4      p\        P                  P                  WW$R7       RV n        RV n        RV n        \        P                   ! R^\        P"                  4      V n        \        P                   ! R^\        P&                  4      V n        V P+                  \        P,                  V P.                  4       V P+                  \        P0                  V P2                  4       V P+                  \        P4                  V P6                  4       V P+                  \        P8                  V P:                  4       V P+                  \        P<                  V P>                  4       V P+                  \        P@                  V P>                  4       V P+                  \        PB                  V P>                  4       V P+                  \        PD                  V P>                  4       V P+                  \        PF                  V P>                  4       V P+                  \        PH                  V P>                  4       V P+                  \        PJ                  V P>                  4       V P+                  \        PL                  V P>                  4       V P+                  \        PN                  V P>                  4       V P+                  \        PP                  V P>                  4       V P+                  \        PR                  V P>                  4       V P+                  \        PT                  V P>                  4       V P+                  \        PV                  V P>                  4       V P+                  \        PX                  V P>                  4       V P+                  \        PZ                  V P>                  4       V P+                  \        P\                  V P^                  4       V P+                  \        P`                  V Pb                  4       V P+                  \        Pd                  V Pf                  4       V P+                  \        Ph                  V Pj                  4       V P+                  \        Pl                  V Pn                  4       V P+                  \        Pp                  V Pn                  4       V Ps                  \        Pt                  4       V Pw                  \        Px                  4       \        P                  R8X  dQ   V P{                  4       pV P}                  V P                  4       ^V,          ,          4       V P                  V4       R# R# )z
Initialize a FigureWx instance.

- Initialize the FigureCanvasBase and wxPanel parents.
- Set event handlers for resize, paint, and keyboard and mouse
  interaction.
	__WXMSW__r   NFr   WHITE	__WXMAC__)Ar   r+   r   Sizemapr   ceilfigurer   r   PlatformFromDIPPanelro   _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SetBackgroundColourr|  GetDPIScaleFactorSetInitialSizeGetSize_set_device_pixel_ratio)r,   parentidr  r   dpiScales   &&&&  r   r+   _FigureCanvasWxBase.__init__  s    	!!$/wwDIIt{{'7'7'<'<=>;;+%>>$'D
$6 $%'VVGQ8N8N%O"%'VVGQ8I8I%J"		"++t}}-		",,/		"""D$5$56		"--1		"""D$9$9:		"$$d&;&;<		"..$"7"78		"$$d&;&;<		"&&(=(=>		"""D$9$9:		"##T%:%:;		"%%t'<'<=		"//4#8#89		"(($*?*?@		"&&(=(=>		"(($*?*?@		"&&(=(=>		"**D,A,AB		"**D,A,AB		"##T%9%9:		"--1		"%%t~~6		"%%t~~6		"..0E0EF		"++T-B-BC 1 12  *;;+%--/H(
 ;<((2	 &r!   c                   \         P                  ! 4       pVP                  V P                  4       \         P                  P                  4       '       g   \         P                  P                  4       pV'       d^   \         P                  P                  V4       \         P                  P                  4        \         P                  P                  4        R# R# R# )z*Copy bitmap of canvas to system clipboard.N)
r   BitmapDataObject	SetBitmapro   TheClipboardIsOpenedOpenSetDataFlushClose)r,   eventbmp_objopen_successs   &&  r   Copy_to_Clipboard%_FigureCanvasWxBase.Copy_to_Clipboard  s    %%'$++&''))??//1L''0%%'%%'  *r!   c                t    V P                  V P                  4       4      '       d   V P                  4        R # R # r%   )r  r  drawr,   r-   r.   s   &*,r   _update_device_pixel_ratio._FigureCanvasWxBase._update_device_pixel_ratio  s-     ''(>(>(@AAIIK Br!   c                v    \         P                  R \        V 4      4       RV n        V P	                  RR7       R# )z%s - draw_idle()FeraseBackgroundN)rh   ri   rj   r  Refreshr5   s   &r   	draw_idle_FigureCanvasWxBase.draw_idle  s,    

%tDz2 	U+r!   c                0    \         P                  ! 4        R # r%   )r   Yieldr5   s   &r   flush_events _FigureCanvasWxBase.flush_events'  s    

r!   c                   \        V R 4      '       d   \        R4      h\        P                  ! V \        P                  R7      pV^ 8  d^   VP                  \        VR,          4      RR7       V P                  \        P                  V P                  VP                  4       R7       \        P                  ! 4       V n        V P                  P                  4        VP                  4        R# )_event_loopzEvent loop already runningr  i  T)oneShotN)hasattrRuntimeErrorr   r&   ID_ANYr2   r   r  	EVT_TIMERstop_event_loopGetIdGUIEventLoopr  Runr9   )r,   timeouttimers   && r   start_event_loop$_FigureCanvasWxBase.start_event_loop+  s    4'';<<")),Q;KKGdN+TK:IIbllD$8$8U[[]IK??,

r!   c                    \        V R 4      '       d?   V P                  P                  4       '       d   V P                  P                  4        V =R# R# )r  N)r  r  r=   Exitr,   r  s   &&r   r  #_FigureCanvasWxBase.stop_event_loop8  sA    4''))++  %%'  (r!   c                   V P                  4       pV P                  4       p\        VP                  4       4      p. p. p^ p\	        V4       Fk  w  pw  rRP                  V	 U
u. uF  p
RV
,          NK  	  up
4      pVP                  V	^ ,          4       V RV RV 2pW9   d   TpVP                  V4       Km  	  RP                  V4      pWEV3# u up
i )z3Return the wildcard string for the filesave dialog.;z*.%sz (z)||)get_default_filetypeget_supported_filetypes_groupedsorteditems	enumeratejoinappend)r,   default_filetype	filetypessorted_filetypes	wildcards
extensionsfilter_indexirL   extsextext_listwildcards   &            r   _get_imagesave_wildcards,_FigureCanvasWxBase._get_imagesave_wildcards?  s    44688:	!)//"34	
()9:OA|xx >## >?Hd1g&r(2hZ8H' X&  ; HHY'	l22 !?s   "C
c                   \         P                  R\        V 4      4       V '       d   V P                  4       '       g   R# V'       g   \        P
                  ! V 4      p\        P                  R8X  da   \        V P                  P                  P                  4       \        4      '       d)   V P                  P                  4       P                  4       MV P                  pVP                  V^ ^ 4       V P                   ed   \#        \$        V P                   4      w  r4rVW4WT3WTWV3W4W63W6WV3.pVP'                  WpP(                  4       VP'                  WpP*                  4       R# R# )z]
Update the displayed image on the GUI canvas, using the supplied
wx.PaintDC device context.
z%s - gui_repaint()Nrz  )rh   ri   rj   IsShownOnScreenr   ClientDCr  
isinstancer  canvasget_rendererrR   ro   ConvertToImageConvertToBitmapr   r  r  r   DrawLineListr  r  )r,   drawDCbmpx0y0x1y1rects   &&      r   gui_repaint_FigureCanvasWxBase.gui_repaintQ  s   
 	

'd4 --//[[&F ++, !3!3!@!@!BJOO {{))+;;= KK 	 	#q!$  , (=(=>NBBR$rr&6R$rr&68D&@&@A&@&@A -r!   r  zWindows bitmapjpegJPEGjpgpcxPCXpngzPortable Network GraphicstifzTagged Image Format FiletiffxpmzX pixmapc                    \         P                  R\        V 4      4       \        P                  ! V 4      pV P
                  '       g   V P                  VR7       MV P                  VR7       VP                  4        R# )z$Called when wxPaintEvt is generated.z%s - _on_paint()r  N)	rh   ri   rj   r   PaintDCr  r  r  Destroy)r,   r  r  s   && r   r  _FigureCanvasWxBase._on_paintx  sU    

%tDz2D!}}}IIVI$F+r!   c                >   V P                  4        \        P                  R\        V 4      4       V P	                  4       P                  4       pV'       d   VP                  V 4      pV'       dS   X'       dK   VP                  '       g9   VP                  \        P                  ,          '       g   V P                  4       pM/V P                  4       pVP                  V P                  4       4       \        V RR4      '       d   W@P                  V P                   38X  d   R# Vw  V n        V n        RV n        V P                  ^8:  g   V P                   ^8:  d   R# V P$                  P&                  p\        P(                  R8X  g   V P+                  4       pWV,          pV P                  V,          pV P                   V,          pV P$                  P-                  WxRR7       V P/                  RR7       \1        RV 4      P3                  4        V P5                  4        R# )	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()_widthNFrz  )forwardr  resize_event)r  rh   ri   rj   	GetParentGetSizerGetItem
ProportionFlagr   EXPAND
GetMinSizeGetClientSizeIncTogetattrr#  _heightr  r  rq   r  r  set_size_inchesr  r   _processr  )	r,   r  szsir   dpivalr   winchhinchs	   &&       r   r  _FigureCanvasWxBase._on_size  s{    	'')

$d4j1^^&&(D!B"R]]]277RYY3F3F??$D %%'DJJt()44((T\\22$(!T\;;!t||q0 {{k)**,EOFf$v%##E%#@
 	U+ND)224r!   c                    \         P                  ! 4       p \        P                  V P	                  4       3\        P
                  V P                  4       3\        P                  V P                  4       3\        P                  V P                  4       3\        P                  V P                  4       3.pV UUu0 uF  w  r#V'       g   K  VkK  	  upp# u uppi r%   )r   GetMouseStater   LEFT
LeftIsDownRIGHTRightIsDownMIDDLEMiddleIsDownBACK
Aux1IsDownFORWARD
Aux2IsDown)state	mod_tablebuttonflags       r   _mpl_buttons _FigureCanvasWxBase._mpl_buttons  s      "
 u//12 1 1 34!3!3!56u//12  %"2"2"45
	 ,5=9<69===s   8C	Cexcludec                  R \         P                  \         P                  3R\         P                  \         P                  3R\         P
                  \         P                  3.pV eB   V P                  4       pV UUUu. uF   w  rEpW5,          '       g   K  W8w  g   K  VNK"  	  uppp# V UUUu. uF&  w  rEp\         P                  ! V4      '       g   K$  VNK(  	  uppp# u upppi u upppi )ctrlrM  rL  )	r   MOD_CONTROLWXK_CONTROLMOD_ALTWXK_ALT	MOD_SHIFT	WXK_SHIFTGetModifiersGetKeyState)r  rK  rF  	modifiersrL   modr   s   &$     r   _mpl_modifiers"_FigureCanvasWxBase._mpl_modifiers  s     R^^R^^4BJJ

+bllBLL1
	
 **,I/8 ;y^T  +2> Dy ; ; 09 ,y^T~~c* Dy , ,;,s   =CCC.!C&C&c                   VP                   pW P                  9   d   V P                  V,          pM;VR 8  d3   \        V4      pVP                  4       '       g   VP	                  4       pMR# V P                  WR7      pRV9   d(   VP                  4       '       d   VP                  R4       RP                  . VOVN4      # )   N)rK  rL  rt  )	KeyCodekeyvaldchr	ShiftDownlowerrX  isupperremover  )r,   r  keyvalr   modss   &&   r   _get_key_FigureCanvasWxBase._get_key  s    \\!,,v&Cc\f+C ??$$iik""5"9d?s{{}}KK xx$%%r!   c                   Vf?   \         P                  ! 4       pV P                  VP                  VP                  4      w  r#MVP                  VP                  r2\         P
                  R8X  gF   V P                  4       pW$,          V P                  P                  P                  W4,          ,
          3# W P                  P                  P                  V,
          3# )z^
Convert a wx position, defaulting to the current cursor position, to
Matplotlib coordinates.
rz  )
r   r:  ScreenToClientXYr  r  r  r   rn   )r,   posr   r   r   s   &&   r   _mpl_coords_FigureCanvasWxBase._mpl_coords  s    
 ;""$C&&suucee4DAq55#%%q{{k)**,E7DKK,,33ag===kk&&--111r!   c                    \        RV V P                  V4      .V P                  4       O5RV/ P                  4        V '       d   VP	                  4        R# R# )zCapture key press.key_press_eventguiEventNr   re  rl  r2  Skipr  s   &&r   r   _FigureCanvasWxBase._on_key_down  sL    "Du%	!(,(8(8(:	!	!!)JJL r!   c                    \        RV V P                  V4      .V P                  4       O5RV/ P                  4        V '       d   VP	                  4        R# R# )zRelease key.key_release_eventrp  Nrq  r  s   &&r   r  _FigureCanvasWxBase._on_key_up  sL    $du%	!(,(8(8(:	!	!!)JJL r!   c                D   \         P                  ! \        P                  ! \        P
                  \         P                  \        P                  \         P                  \        P                  \         P                  \        P                  \         P                  \        P                  \         P                  \        P                  \         P                  \        P                   \         P"                  /VR 7      4      pV P%                  V4       V P'                  4        R# ))cursorN)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,   rx  s   &&r   
set_cursor_FigureCanvasWxBase.set_cursor  s    4--LL"..LL"..OOR__!!2??LL"..%%r'7'7##R%5%5/
   	vr!   c                    V P                  4       '       d   V P                  4        V'       d   V P                  4        R# R# )zControl wx mouse capture.N)
HasCaptureReleaseMouseCaptureMouse)r,   captures   &&r   _set_capture _FigureCanvasWxBase._set_capture  s/    ?? r!   c                (    V P                  R4       R# )zCapture changed or lostFN)r  r  s   &&r   r  $_FigureCanvasWxBase._on_capture_lost  s    % r!   c                   VP                  4        T P                  VP                  4       ;'       g    VP                  4       4       V P	                  V4      w  r#\
        P                  \        P                  \
        P                  \        P                  \
        P                  \        P                  \
        P                  \        P                  \
        P                  \        P                   /pVP#                  4       pVP%                  WU4      pV P'                  V4      pVP                  4       '       d    \)        RWW5WaR7      P+                  4        R# VP                  4       '       d!   \)        RWW5RWaR7      P+                  4        R# VP-                  4       '       d    \)        RWW5WaR7      P+                  4        R# R# )Start measuring on an axis.button_press_event)rV  rp  T)dblclickrV  rp  button_release_eventN)rr  r  
ButtonDownButtonDClickrl  r   MOUSE_BTN_LEFTr   r;  MOUSE_BTN_MIDDLEr?  MOUSE_BTN_RIGHTr=  MOUSE_BTN_AUX1rA  MOUSE_BTN_AUX2rC  	GetButtonr   rX  r   r2  ButtonUp)r,   r  r   r   
button_maprG  rV  s   &&     r   r  $_FigureCanvasWxBase._on_mouse_button  sJ   

%**,DD0B0B0DE&{//!3!3 1 1{//{22

 "/''.	+Ta!*<<DHJ!!+Ta$!*<<DHJ^^-t!*<<DHJ r!   c           
        V P                  V4      w  r#VP                  VP                  ,          VP                  ,          pVP	                  4        \
        P                  R8X  d=   \        V R4      '       g	   RV n        M"V P                  '       d
   RV n        R# RV n        \        RWW4V P                  V4      VR7      P                  4        R# )z3Translate mouse wheel events into matplotlib eventsr}  _skipwheeleventTFNscroll_event)steprV  rp  )rl  LinesPerActionWheelRotation
WheelDeltarr  r   r  r  r  r   rX  r2  )r,   r  r   r   r  s   &&   r   r  #_FigureCanvasWxBase._on_mouse_wheel3  s    &##e&9&99E<L<LL

;;+%4!233'+$%%%',$'+$>4A!007!	##+8:r!   c           	         VP                  4        \        RV .V P                  V4      O5RV P                  4       RV P	                  V4      RV/ P                  4        R# )r  motion_notify_eventbuttonsrV  rp  N)rr  r   rl  rI  rX  r2  r  s   &&r   r  _FigureCanvasWxBase._on_motionG  sd    

($ 	#$$U+	#,,.	# "007	# "		# $,8:r!   c                    VP                  4        \        RV .V P                  V4      O5RV P                  4       RV/ P	                  4        R# )zMouse has entered the window.figure_enter_eventrV  rp  Nrr  r   rl  rX  r2  r  s   &&r   r  _FigureCanvasWxBase._on_enterP  O    

*D 	&''.	& $ 3 3 5	&  %	& '/hjr!   c                    VP                  4        \        RV .V P                  V4      O5RV P                  4       RV/ P	                  4        R# )zMouse has left the window.figure_leave_eventrV  rp  Nr  r  s   &&r   r  _FigureCanvasWxBase._on_leaveX  r  r!   )	r  r0  r  r  r  r  r  r#  ro   r%   )    ru   )dr@   rA   rB   rC   rD   required_interactive_frameworkr#   
_timer_clsr   classpropertymanager_classr   rO  rS  rQ  WXK_CAPITALWXK_LEFTWXK_UP	WXK_RIGHTWXK_DOWN
WXK_ESCAPEWXK_F1WXK_F2WXK_F3WXK_F4WXK_F5WXK_F6WXK_F7WXK_F8WXK_F9WXK_F10WXK_F11WXK_F12
WXK_SCROLL	WXK_PAUSEWXK_BACK
WXK_RETURN
WXK_INSERT
WXK_DELETEWXK_HOMEWXK_END
WXK_PAGEUPWXK_PAGEDOWNWXK_NUMPAD0WXK_NUMPAD1WXK_NUMPAD2WXK_NUMPAD3WXK_NUMPAD4WXK_NUMPAD5WXK_NUMPAD6WXK_NUMPAD7WXK_NUMPAD8WXK_NUMPAD9WXK_NUMPAD_ADDWXK_NUMPAD_SUBTRACTWXK_NUMPAD_MULTIPLYWXK_NUMPAD_DIVIDEWXK_NUMPAD_DECIMALWXK_NUMPAD_ENTERWXK_NUMPAD_UPWXK_NUMPAD_RIGHTWXK_NUMPAD_DOWNWXK_NUMPAD_LEFTWXK_NUMPAD_PAGEUPWXK_NUMPAD_PAGEDOWNWXK_NUMPAD_HOMEWXK_NUMPAD_ENDWXK_NUMPAD_INSERTWXK_NUMPAD_DELETEr]  r+   r  r  r  r  r  r  r   r  r   r  r  r  r  rI  rX  re  rl  r  r  r  r  r  r  r  r  r  r  rE   rF   rI   s   @r   rE  rE    s     &*"J&&'BCM:
	:
g: 	

E: 		:
 	V: 			4: 	g: 	V: 	x: 			4: 			4: 			4: 			4: 			4: 			4:  			4!:" 			4#:$ 			4%:& 	

E':( 	

E):* 	

E+:, 	}-:. 	g/:0 	[1:2 	w3:4 	x5:6 	x7:8 	V9:: 	

E;:< 	x=:> 	?:@ 	A:B 	C:D 	E:F 	G:H 	I:J 	K:L 	M:N 	O:P 	Q:R 	S:T 	3U:V 	W:X 	Y:Z 	c[:\ 	u]:^ 	W_:` 	$a:b 	Wc:d 	Fe:f 	Fg:h 	h


F
5
h
hs:Gx73r
(,!3$B6


$
$
vu*)*z
I,\ > > ,d , ,&"2" !G2.(.11 1r!   rE  c                     a  ] tR tRt o RR ltR t]P                  ! ]]P                  4      t
]P                  ! ]]P                  4      ;tt]P                  ! ]]P                  4      t]P                  ! ]]P                   4      t]P                  ! ]]P$                  4      ;tt]P                  ! ]]P*                  4      tRtV tR# )FigureCanvasWxia  Nc                   \         P                  R\        V 4      4       \        V P                  V P
                  P                  4      V n        V P
                  P                  V P                  4       RV n	        V P                  VR7       R# )zt
Render the figure using RendererWx instance renderer, or using a
previously defined renderer if none is specified.
z%s - draw()Tr  N)rh   ri   rj   rR   ro   r  rq   r  r  r  r  )r,   r  s   &&r   r  FigureCanvasWx.drawd  s^    
 	

=$t*-"4;;@''r!   c                   \         P                  ! \        P                  ! V P                  P
                  P                  4      \        P                  ! V P                  P
                  P                  4      4      pV P                  P                  \        W0P                  P                  4      4       \        P                  ! V4      '       d   VP                  4       MTpVP                  W!4      '       g   \        R V 24      hV P                   '       d   V P                  4        V '       d   V P#                  4        R# R# )zCould not save figure to N)r   r   r   r  r  r   rl   rn   r  rR   rq   r   is_writable_file_liker  SaveFiler  r  r  )r,   filetypefilenamero   	saved_objs   &&&  r   _print_imageFigureCanvasWx._print_imageo  s    499T[[%5%5%;%;<99T[[%5%5%<%<=?FKKOO<=33H== **,  	 !!(55!:8*EFF
 ===IIK LLN r!   )r  r  r%   )r@   rA   rB   rC   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_xpmrE   rF   r  s   @r   r  r  a  s     	(( ''b((*I&44b))+ +J''b((*I''b((*I&44b((* *J''b((*Ir!   r  c                   8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )FigureFrameWxi  c                 < \         P                  R 8X  d   \         P                  pM\         P                  ! ^^4      p\        S	V `  RRVR7       \        P                  R\        V 4      4       \        V 4       V! V RV4      V n
        \        V P                  W4      pV P                  P                  P                  pVe   V P                  V4       \        \         P"                  VP$                  P&                  4      w  rxV P                  P)                  V P+                  \         P,                  ! Wx4      4      4       V P                  P/                  V P+                  \         P,                  ! ^^4      4      4       V P                  P1                  4        V P3                  4        V P5                  \         P6                  V P8                  4       R# )rz  N)r  r  rk  rg   )r   r  DefaultPositionPointr*   r+   rh   ri   rj   _set_frame_iconr  rG  managertoolbar
SetToolBarr  r   r  r   r   r  r  r~  
SetMinSizeSetFocusFitr  	EVT_CLOSE	_on_close)
r,   numfigcanvas_classrk  r  r  r   r   r/   s
   &&&$     r   r+   FigureFrameWx.__init__  s5    ;;+%$$C((2r"C5

$d4j1"4S1!$++s9++%%--OOG$ 499chhmm,""4<<#>?t||BGGAqM:;
		",,/r!   c                    \         P                  R \        V 4      4       \        RV P                  4      P                  4        V P                  P                  4        RV P                  P                  n        \        P                  ! V P                  P                  4        V P                  P                  V P                  P                  P                  4       VP                  4        R#   \         d     Li ; i)z%s - on_close()close_eventN)rh   ri   rj   r   r  r2  r  r  framer   destroympl_disconnectr  _id_dragAttributeErrorrr  r  s   &&r   r  FigureFrameWx._on_close  s    

$d4j1=$++.779##% %)!DKK''(	KK&&t{{':':'C'CD 	

  		s   $9C/ /C=<C=)r  )	r@   rA   rB   rC   r+   r  rE   rF   rG   rH   s   @@r   r  r    s     0> r!   r  c                   z   a a ] tR tRt oRtV 3R lt]R 4       t]R 4       tR t	R t
R tR	 tR
 tR tRtVtV ;t# )rG  i  aj  
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                   < \         P                  R \        V 4      4       V;V n        V n        \
        SV `  W4       R# )rg   N)rh   ri   rj   r%  windowr*   r+   )r,   r  r  r%  r/   s   &&&&r   r+   FigureManagerWx.__init__  s1    

$d4j1#((
T[%r!   c                8   \         P                  ! 4       ;'       g    \        4       p\        W2VR 7      pVP                  P
                  p\        P                  ! 4       '       d5   VP                  P                  4        VP                  P                  4        V# ))r!  )r   GetAppr    r  r  r  mplis_interactiver%  Showr  )rH  r!  r  r  r   r%  r  s   &&&&   r   create_with_canvas"FigureManagerWx.create_with_canvas  sh     		..}cE--''MM MM##%r!   c                    \         P                  P                  4       '       g.   \         P                  ! 4       pVe   VP	                  4        R # R # R # r%   )r   r   IsMainLoopRunningr0  MainLoop)rH  r   s   & r   start_main_loopFigureManagerWx.start_main_loop  s:    vv''))IIKE   ! *r!   c                    V P                   P                  4        V P                  P                  4        \        P
                  R ,          '       d   V P                   P                  4        R# R# )zfigure.raise_windowN)r%  r3  r  r  r1  rcParamsRaiser5   s   &r   showFigureManagerWx.show  sE    

<<-..JJ /r!   c                    \         P                  R \        V 4      4       V P                  pV'       d#   \        P
                  ! VP                  4       R# R# )z%s - destroy()N)rh   ri   rj   r%  r   	CallAfterr  )r,   r-   r%  s   &* r   r&  FigureManagerWx.destroy  s8    

#T$Z0

 LL% r!   c                v    V P                   P                  V P                   P                  4       '       * 4       R # r%   )r%  ShowFullScreenIsFullScreenr5   s   &r   full_screen_toggle"FigureManagerWx.full_screen_toggle  s$    

!!djj&=&=&?"?@r!   c                6    V P                   P                  4       # r%   )r-  GetTitler5   s   &r   get_window_title FigureManagerWx.get_window_title  s    {{##%%r!   c                <    V P                   P                  V4       R # r%   )r-  SetTitle)r,   titles   &&r   set_window_title FigureManagerWx.set_window_title   s    U#r!   c           
         V P                   P                  V P                   P                  \        P                  ! \
        P                  ! V4      \
        P                  ! V4      4      4      4       R # r%   )r-  SetSizeClientToWindowSizer   r~  r   r  )r,   rl   rn   s   &&&r   resizeFigureManagerWx.resize  sI     	DKK::277IIedii/<1 2 	3r!   )r%  r-  )r@   rA   rB   rC   rD   r+   classmethodr4  r9  r>  r&  rF  rJ  rO  rT  rE   rF   rG   rH   s   @@r   rG  rG    s[     &
   ! !&A&$3 3r!   rG  c                j    \         P                  ! \        \        P                  ! RV 4      4      4      # )zP
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%    
 99S--hABCCr!   c                     \         P                  ! 4       pR FL  p\         P                  ! \        V4      4      pVP	                  4       '       g    R# VP                  V4       KN  	  V P                  V4       R# )matplotlib.pngN)r]  zmatplotlib_large.png)r   
IconBundleIconr[  IsOkAddIconSetIcons)r%  bundleimageicons   &   r   r  r    sR    ]]_F;ww|E*+yy{{t	 <
 
NN6r!   c                      a a ] tR tRt oRR]P
                  /R llt]R 4       tR t	V 3R lt
V 3R ltR tR	 tR
 tR tR tRtVtV ;t# )NavigationToolbar2Wxi  r   c          
        \         P                  P                  WP                  4       RVR7       \         P                  R8X  d5   V P                  V P                  4       V P                  4       ,          4       / V n        V P                   F  w  rErgVf   V P                  4        K  T P                  RV P                  V R24      \         P                  YEVR9   d   \         P                  M\         P                  R7      P                   V P                  V&   V P#                  \         P$                  \'        W4      V P                  V,          R7       K  	  W n        V P(                  '       dW   V P+                  4        \         P,                  ! V \         P.                  R7      V n        V P3                  V P0                  4       V P5                  4        \6        P                  ! W4       R# )	   r   r}  N.svg)ro   bmpDisabledlabel	shortHelpkindr  r  )PanZoom)r   ToolBarr+   r&  r  SetToolBitmapSizeGetToolBitmapSizer  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+   NavigationToolbar2Wx.__init__  sk   


D"2"2"4bF;;+%""4#9#9#;D<R<R<T#TU8<4D
|!!#::D&9: "+/?+B"--!~~  0  KK IIbkk74#:T*  , 9G  ($$&!}}THDOOD,,-##D1r!   c                    \         P                  P                  4       P                  4       p\        P                  ! RV 4      pVP                  R8X  d|   VP                  4       pV'       d   VP                  RR4      p\         P                   ! 4       P#                  \         P$                  4      p\         P&                  P)                  Wx4      # \*        P,                  P/                  V4      p	\0        P2                  ! V	P5                  R	4      4      p
V'       d}   \         P                  P                  \         P                  4      pV
R,          ^ 8H  P7                  RR7      pVP9                  4       VP;                  4       VP=                  4       3WR
3&   \         P>                  PA                  V
PB                  ^,          V
PB                  ^ ,          V
PE                  4       4      #   \         d    \         P                  P                  \         P                  4      p\         P                  P                  \         P                  4      pRTP                  ,          RTP                  ,          ,           RTP                  ,          ,           ^,          pRTP                  ,          RTP                  ,          ,           RTP                  ,          ,           ^,          pYT,
          R8  p ELi ; i)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.
gA`"?gbX9?gv/?g?rX  rk  s   fill:black;s   fill:white;RGBAN   N)axis).r  r  )#r   SystemSettingsGetAppearanceIsDarkr)  	GetColourSYS_COLOUR_WINDOWSYS_COLOUR_WINDOWTEXTredgreenbluer   rZ  suffix
read_bytesreplaceArtProviderGetDIPSizeHintART_TOOLBARBitmapBundleFromSVGPILImageopennparrayconvertallRedGreenBluer   r   r   r   )rL   darkbgr!  bg_lumfg_lumr   svgtoolbarIconSizepilimgrd  
black_masks   &           r   ry  NavigationToolbar2Wx._icon>  s   		($$224;;=D ##Hd3;;& //#Ckk..A nn.==bnnMO??**3@@YY^^D)FHHV^^F34E&&001I1IJ#Gn166B6?
)+288:rwwy(I"n%99++AAA A1  	("",,R-A-ABB"",,R-E-EFBRVVmdRXXo5rwwF#MFRVVmdRXXo5rwwF#MF?R'D	(s   ,G* *DK21K2c                6   R V P                   9   d;   V P                  V P                   R ,          V P                  P                  R8H  4       RV P                   9   d=   V P                  V P                   R,          V P                  P                  R8H  4       R# R# )rp  PANrq  ZOOMN)ru  
ToggleToolmoderL   r5   s   &r   _update_buttons_checked,NavigationToolbar2Wx._update_buttons_checkedb  sg    DKKOODKK.		%0GHT[[ OODKK/61IJ !r!   c                D   < \         SV `  ! V!   V P                  4        R # r%   )r*   zoomr  r,   r-   r/   s   &*r   r  NavigationToolbar2Wx.zoomh  s    d$$&r!   c                D   < \         SV `  ! V!   V P                  4        R # r%   )r*   panr  r  s   &*r   r  NavigationToolbar2Wx.panl  s    T$$&r!   c           	        V P                   P                  4       w  r#pV P                   P                  4       p\        P                  ! V P                   P                  4       R \        P                  R,          WR\        P                  \        P                  ,          4      pVP                  V4       VP                  4       \        P                  8X  Ed   \        P                  ! VP                  4       4      p\         P#                  R\%        V 4      V4       W6P'                  4       ,          pVP(                  R,          p	WP                   P+                  4       9   d    W8w  d   \         P-                  RWV	4       T	p\        P                  R,          '       d'   \/        VP0                  4      \        P                  R&    V P                   P2                  P5                  WxR7       V# R#   \6         df   p
\        P8                  ! T P                   P                  4       \/        T
4      RR7      pTP                  4        TP;                  4         Rp
?
R# Rp
?
ii ; i)	zSave to filezsavefig.directoryz%s - Save file path: %s:ri  NNzDextension %s did not match the selected image type %s; going with %s)formatzMatplotlib error)r  messagecaptionN)r  r   get_default_filenamer   
FileDialogr&  r1  r<  FD_SAVEFD_OVERWRITE_PROMPTSetFilterIndex	ShowModalID_OKpathlibr   GetPathrh   ri   rj   GetFilterIndexr  get_supported_filetypeswarningrY  r  r  savefig	ExceptionMessageDialogr   )r,   r-   r  r  r  default_filedialogr   fmtr  es   &*         r   save_figure NavigationToolbar2Wx.save_figurep  s   (,(L(L(N%	{{779KK!!#^LL,-|JJ///1 	l+)<< 01DJJ0$t*dC,,./C++b/Ckk99;;
  < s, ||/00474D01!""**4*<# *$  !));;002CF.0   "  !s   'G/ /I:AIIc                f   V P                   P                  P                  P                  p\        P
                  R 8X  d   ^MV P                   P                  4       pW',          Wc,
          V,          WG,          We,
          V,          3V P                   n        V P                   P                  4        R# )rz  N)	r  r  r   rn   r   r  r  r  r  )r,   r  r  r  r  r  rn   sfs   &&&&&&  r   draw_rubberband$NavigationToolbar2Wx.draw_rubberband  sw    ##((//++,Q$++2O2O2Q(*R/?(*R/?(A$r!   c                \    R V P                   n        V P                   P                  4        R # r%   )r  r  r  r5   s   &r   remove_rubberband&NavigationToolbar2Wx.remove_rubberband  s    '+$r!   c                d    V P                   '       d   V P                  P                  V4       R # R # r%   )r~  r  SetLabelr,   r   s   &&r   set_message NavigationToolbar2Wx.set_message  s'    %%a( r!   c                r   V P                   P                  ^ 8  pV P                   P                  \        V P                   4      ^,
          8  pRV P                  9   d$   V P	                  V P                  R,          V4       RV P                  9   d&   V P	                  V P                  R,          V4       R# R# )r  BackForwardN)
_nav_stack_poslenru  
EnableTool)r,   can_backwardcan_forwards   &  r   set_history_buttons(NavigationToolbar2Wx.set_history_buttons  s    ++a/oo**S-AA-EET[[ OODKK/>#OODKK	2K@ $r!   )r~  r  ru  ru   )r@   rA   rB   rC   r   	TB_BOTTOMr+   r  ry  r  r  r  r  r  r  r  r  rE   rF   rG   rH   s   @@r   rg  rg    s^     2",, 2@ !A !AFK'' !D)A Ar!   rg  c                   d   a  ] tR tRt o RtR]P                  3R ltR tR t	R t
R tR	 tR
tV tR# )	ToolbarWxi  rk  Nc                   Vf   VP                   P                  4       p\        P                  ! W4       \        P
                  P                  WRVR7       V P                  4       V n        \        P                  ! V \        P                  R7      V n
        V P                  V P                  4       / V n        / V n        R # )Nrj  r  )r  r&  r
   r+   r   rr  r  _spacer  r  r  r  
_toolitems_groups)r,   toolmanagerr  r   s   &&&&r   r+   ToolbarWx.__init__  s    > ''113F""45


D"E:..0==R^^D(()r!   c                N   a a V V3R l\        S P                  4       4       w  pV# )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   X   <"   T F  pSP                  V4      S8X  g   K  Vx  K!  	  R # 5ir%   )GetToolByPos).0rk  r,   tools   & r   	<genexpr>*ToolbarWx._get_tool_pos.<locals>.<genexpr>  s-      35$$S)T1 5s   *
*)range
ToolsCount)r,   r  rk  s   ff r   _get_tool_posToolbarWx._get_tool_pos  s!    3uT__5 3
r!   c           
       a a VS P                   9  d8   S P                  S P                  S P                  4      4      S P                   V&   S P                   V,          p\	        S P
                  \        S P                  4      4       Uu. uF5  pVP                  4       '       g   K  VP                  4       '       d   K3  VNK7  	  p	pV^ 8  dE   Wy^ ,          8X  d   ^ M3S P                  WP                  V4      ^,
          ,          4      ^,           p
MS P                  V4      ^,           p
W,           pV'       dn   \        P                  V4      pV'       g   \        P                  M\        P                  pS P!                  TRST\        P"                  TT;'       g    R4      pMrS P%                  S4      ^ ,          ^
,           R3pV'       d   \        P&                  ! S RSVR7      pM\        P(                  ! S RSVR7      pS P+                  VVSR7      pS P-                  4        VV 3R lpV'       d#   S P/                  \        P0                  VV4       M XP/                  \        P2                  V4       S P4                  P7                  S. 4       S P4                  S,          P9                  VV34       R# u upi )r   r{  rm  c                 *   < SP                  S4       R # r%   )trigger_tool)r  rL   r,   s   &r   handler'ToolbarWx.add_toolitem.<locals>.handler  s    d#r!   Nr  )r  InsertSeparatorr  r  r  r  r  r  IsSeparatorIsStretchableSpaceindexrg  ry  r   r{  rz  
InsertToolr  GetTextExtentToggleButtonButtonInsertControlr  r  r}  r  r  
setdefaultr  )r,   rL   grouppositionr  descriptiontoggleseptsepsstartidxr  ro  r  r   rK  r  s   ff&&&&&           r   add_toolitemToolbarWx.add_toolitem  s    $"&"6"6""4;;/#1DLLll5!t00%2HI CIa==? +,+?+?+A I C q= a.Q,,T**S/A2E-FG!K  &&s+a/E&,,Z8C)/2>>R]]D??3D#r}}d#.#4#4"6D &&t,Q/"4b9D//$DtD))D"d>%%c7$%?D	$ IIbkk7D1LL))73""4,$$dG_5GCs   	J;&J;>J;c                (   WP                   9  d   R # V P                   V,           FX  w  r4VP                  4       '       g   V P                  VP                  V4       K9  VP	                  4       P                  V4       KZ  	  V P                  4        R # r%   )r  	IsControlr  r|  
GetControlSetValuer  )r,   rL   toggledr  r  s   &&&  r   toggle_toolitemToolbarWx.toggle_toolitem  sf    &!__T22MD>>##1!**73	 3
 	r!   c                    V P                   P                  V. 4       F   w  r#V P                  VP                  4       K"  	  R # r%   )r  pop
DeleteToolr|  )r,   rL   r  r  s   &&  r   remove_toolitemToolbarWx.remove_toolitem  s/    !__00r:MDOODGG$ ;r!   c                <    V P                   P                  V4       R # r%   )r  r  r  s   &&r   r  ToolbarWx.set_message   s    !!!$r!   )r  r  r  r  )r@   rA   rB   rC   _icon_extensionr   r  r+   r  r   r'  r,  r  rE   rF   r  s   @r   r  r    s7     O+/r|| 		+6Z%% %r!   r  c                   &   a  ] tR tRt o R tRtV tR# )ConfigureSubplotsWxi  c                0    \         P                  V 4       R # r%   )rg  configure_subplotsr,   r-   s   &*r   triggerConfigureSubplotsWx.trigger  s    //5r!   rv   Nr@   rA   rB   rC   r6  rE   rF   r  s   @r   r2  r2    s     6 6r!   r2  c                   &   a  ] tR tRt o R tRtV tR# )SaveFigureWxi
  c                L    \         P                  V P                  4       4       R # r%   )rg  r  "_make_classic_style_pseudo_toolbarr5  s   &*r   r6  SaveFigureWx.trigger  s    ((335	7r!   rv   Nr8  r  s   @r   r:  r:  
  s     7 7r!   r:  c                   ,   a  ] tR tRt o R tR tRtV tR# )RubberbandWxi  c                R    \         P                  V P                  4       R WW44       R # r%   )rg  r  r<  )r,   r  r  r  r  s   &&&&&r   r  RubberbandWx.draw_rubberband  s#    ,,335tRR	Mr!   c                L    \         P                  V P                  4       4       R # r%   )rg  r  r<  r5   s   &r   r  RubberbandWx.remove_rubberband  s    ..335	7r!   rv   N)r@   rA   rB   rC   r  r  rE   rF   r  s   @r   r?  r?    s     M7 7r!   r?  c                   Z   a a ] tR tRt oRtR.t. ROtV 3R ltR t]	R 4       t
RtVtV ;t# )	_HelpDialogi  Nc                ^  < \         SV `  VR \        P                  \        P                  ,          R7       \        P
                  ! \        P                  4      p\        P                  ! ^ ^^^4      pV P                  4       P                  4       p\        V P                  V,           4       Fw  w  rg\        WpP                  4       FY  w  r\        P                  ! WR7      p
V^ 8X  d   V
P                  V4       V
P!                  V	4       VP#                  V
^ ^ ^ 4       K[  	  Ky  	  VP#                  V^ \        P$                  ^4       \        P&                  ! V \        P(                  4      pVP#                  V^ \        P*                  \        P$                  ,          ^4       V P-                  V4       VP/                  V 4       V P1                  4        V P3                  \        P4                  V P6                  4       VP3                  \        P8                  V P6                  4       R# )Help)rN  r   r  N)r*   r+   r   DEFAULT_DIALOG_STYLERESIZE_BORDERBoxSizerVERTICALFlexGridSizerGetFontMakeBoldr  headerszipwidthsr  r~   WrapAddALLr  r  ALIGN_CENTER_HORIZONTALSetSizerr  Layoutr  r  r  
EVT_BUTTON)r,   r  help_entriessizer
grid_sizerrY   rrowcolrl   rm  okr/   s   &&&         r   r+   _HelpDialog.__init__!  ss   v!669I9II 	 	K BKK(%%aAq1
||~&&(| ;<FA #C 5d66MM$'

5!uaA. !6 = 			*a+YYtRXX&		"a33bff<a@e		$		",,/
t~~.r!   c                \    R \         n        V P                  4        VP                  4        R # r%   )rE  	_instanceDestroyLaterrr  r  s   &&r   r  _HelpDialog._on_close:  s     $

r!   c                    V P                   '       d   V P                   P                  4        R # V ! W4      V n         V P                   P                  4        R # r%   )rb  r=  r3  )rH  r  rY  s   &&&r   r>  _HelpDialog.show?  s<     ===MM!F1r!   rv   )Action	ShortcutsDescription)d      rS   )r@   rA   rB   rC   rb  rO  rQ  r+   r  rV  r>  rE   rF   rG   rH   s   @@r   rE  rE    s:     I56GF/2
   r!   rE  c                   &   a  ] tR tRt o R tRtV tR# )HelpWxiI  c                    \         P                  V P                  P                  P	                  4       V P                  4       4       R # r%   )rE  r>  r  r  GetTopLevelParent_get_help_entriesr5  s   &*r   r6  HelpWx.triggerK  s1    ++==?//1	3r!   rv   Nr8  r  s   @r   rm  rm  I  s     3 3r!   rm  c                   &   a  ] tR tRt o R tRtV tR# )ToolCopyToClipboardWxiP  c                $   V P                   P                  '       g   V P                   P                  4        V P                   P                  P	                  4       '       d%   \
        P                  P                  4       '       g   R #  \
        P                  P                  \
        P                  ! V P                   P                  4      4       \
        P                  P                  4        R #   \
        P                  P                  4        i ; ir%   )r  r  r  ro   r`  r   r  r  r  r  r  r  s   &*,r   r6  ToolCopyToClipboardWx.triggerR  s    {{###KK{{!!&&((0D0D0F0F	$OO##B$7$78J8J$KLOO!!#BOO!!#s   AC/ / Drv   Nr8  r  s   @r   rs  rs  P  s     $ $r!   rs  c                   6    ] tR tRt]t]t]P                  t	Rt
R# )
_BackendWxia  rv   N)r@   rA   rB   rC   r  FigureCanvasrG  FigureManagerr9  mainlooprE   rv   r!   r   rw  rw  a  s    !L#M..Hr!   rw  )OrD   r   loggingr   r  r  rB  numpyr  	PIL.Imager  
matplotlibr1  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@   rh   r   	lru_cacher    r#   
deprecatedrR   r   r  rE  r  Framer  rG  r[  r  rr  rg  r  _register_tool_classConfigureSubplotsBaser2  SaveFigureBaser:  RubberbandBaser?  DialogrE  ToolHelpBaserm  ToolCopyToClipboardBasers  _toolbar2_class_toolmanager_toolbar_classexportrw  rv   r!   r   <module>r     s       
    B B B B B E D )   * 	 "
  Q  i  & 	y,FHLC LC	HLC^j9+ j9ZU1*BHH U1p-*( -*`.BHH .bF3' F3RDJA-rzz JA^U%!2:: U%p ##$786-== 6 96
 ##$787=// 7 97 ##$787=// 7 97*")) *Z ##$783]'' 3 93 ##$78	$MAA 	$ 9	$ #7 -6 * 
/ / /r!   