
    G8c                     `   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 d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmc mc mZ ddlmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) g dd	d
dddddddddddddddddejT                  dk7  rdndfdejT                  dk7  rd ndfd!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0D  ci c]  \  } } e% e+ e$d1      |             | c}} Z,d2D cg c]/  \  }} e% e+ e$d3      |             e% e+ e$d1      |            f1 c}}Z-ej\                  d4fej^                  d5fej`                  d6fejb                  d7fejd                  d8fejf                  d9fejh                  d:ffD  ci c]  \  } }|  e+ e$d;      |       c}} Z5ejl                   G d< d=             Z7 e jp                  d      d>        Z9 G d? d@e      Z: G dA dBee!jv                        Z< G dC dDe!jz                        Z> G dE dFe      Z? G dG dHee!j                        ZA G dI dJe!j                        ZC G dK dLee!j                        ZD ej                  e<       G dM dNej                               ZG ej                  e<       G dO dPej                               ZI ej                  dQdRS       G dT dUej                               ZL ej                  e<       G dV dWej                               ZN ej                  e<       G dX dYej                               ZP ej                  e<       G dZ d[ej                               ZReAe?_S        eDe?_T        ej                   G d\ d]e             ZVyc c}} w c c}}w c c}} w )^    N)_apibackend_toolscbook)Gcf)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2	TimerBasecursorsToolContainerBaseMouseButton
CloseEventKeyEventLocationEvent
MouseEventResizeEvent   )	qt_compat)QtCoreQtGui	QtWidgets__version__QT_API_enum_to_int_devicePixelRatioF
_isdeleted_setDevicePixelRatio_maybe_allow_interrupt)
Key_Escapeescape)Key_Tabtab)Key_Backspace	backspace)
Key_Returnenter)	Key_Enterr(   )
Key_Insertinsert)
Key_Deletedelete)	Key_Pausepause)
Key_SysReqsysreq)	Key_Clearclear)Key_Homehome)Key_Endend)Key_Leftleft)Key_Upup)	Key_Rightright)Key_Downdown)
Key_PageUppageup)Key_PageDownpagedown)	Key_ShiftshiftKey_ControldarwincontrolcmdKey_Metameta)Key_Altalt)Key_CapsLock	caps_lock)Key_F1f1)Key_F2f2)Key_F3f3)Key_F4f4)Key_F5f5)Key_F6f6)Key_F7f7)Key_F8f8)Key_F9f9)Key_F10f10)rb   f11)Key_F12f12)Key_Super_Lsuper)Key_Super_Rrh   zQtCore.Qt.Key))ControlModifierrF   )AltModifierrL   )ShiftModifierrD   )MetaModifierrJ   zQtCore.Qt.KeyboardModifierSizeAllCursorPointingHandCursorArrowCursorCrossCursor
WaitCursorSizeHorCursorSizeVerCursorzQtCore.Qt.CursorShapec                   N    e Zd Z  ej                  dd       ed             Zy)__getattr__z3.6z!QtWidgets.QApplication.instance()alternativec                 >    t         j                  j                         S N)r   QApplicationinstanceselfs    @/usr/lib/python3/dist-packages/matplotlib/backends/backend_qt.py<lambda>z__getattr__.<lambda>a   s    )"8"8"A"A"C     N)__name__
__module____qualname__r   
deprecatedpropertyqApp r   r   rv   rv   ]   s-    @?4??>@CDFDr   rv   c                  .   t         j                  j                         } | t        j                  j                         st        d      t        dv rd}nt        dv rd}nt        d      |D ]  }t        j                  j                  | d      }|(|j                  j                         Ct        j                  j                  | d      }t        j                  d	t         d
t        j                          d| d
|j                          d	        n 	 t         j                  j                  t        j                   j"                         	 t         j                  j'                  t        j                   j(                  j*                         t        j                  dg      } t        j,                  dk(  rDt/        t1        j2                  d            }t5        j6                  |      }| j9                  |       | j:                  j=                  | j>                         t1        j@                          	 | j                  t        j                   jB                         | S # t$        $ r Y  w xY w# t$        $ r Y w xY w# t$        $ r Y | S w xY w)NzInvalid DISPLAY variable>   PyQt6PySide6)PyQt5PySide2>   r   r   )r   r   zShould never be herez
.QtWidgetsz.QtCorezMatplotlib is using z which wraps z+ however an instantiated QApplication from z< exists.  Mixing Qt major versions may not work as expected.
matplotlibrG   images/matplotlib.svg)"r   r{   r|   mpl_c_internal_utilsdisplay_is_validRuntimeErrorr   sysmodulesgetr   warn_externalr   qVersionsetAttributeQtAA_EnableHighDpiScalingAttributeError#setHighDpiScaleFactorRoundingPolicy HighDpiScaleFactorRoundingPolicyPassThroughplatformstrr   _get_data_pathr   QIconsetWindowIconlastWindowClosedconnectquit_setup_new_guiappAA_UseHighDpiPixmaps)appother_bindingsbindingmod
other_coreimageicons          r   _create_qAppr   f   s;   

 
 
)
)
+C { $$5579:: ))1N++1N566% 	G++//WIZ"89C3#3#3#<#<#>#J [[__y-@A
""*6(-() *))0	!**,- .99 		""//		113	""FF		::FFH $$l^4<<8#,,-DEFE;;u%Dd#$$SXX.!778 J)  		
  		  Js7   7I( AI8 =)J (	I54I58	JJ	JJc                   @     e Zd ZdZ fdZd Zd Zd Zd Zd Z	 xZ
S )TimerQTz-Subclass of `.TimerBase` using QTimer events.c                     t        j                         | _        | j                  j                  j	                  | j
                         t        |   |i | y rz   )r   QTimer_timertimeoutr   	_on_timerrh   __init__r~   argskwargs	__class__s      r   r   zTimerQT.__init__   s@     mmo##DNN3$)&)r   c                 P    t        | j                        s| j                          y y rz   )r   r   _timer_stopr}   s    r   __del__zTimerQT.__del__   s!     $++& 'r   c                 N    | j                   j                  | j                         y rz   )r   setSingleShot_singler}   s    r   _timer_set_single_shotzTimerQT._timer_set_single_shot   s    !!$,,/r   c                 N    | j                   j                  | j                         y rz   )r   setInterval	_intervalr}   s    r   _timer_set_intervalzTimerQT._timer_set_interval   s    /r   c                 8    | j                   j                          y rz   )r   startr}   s    r   _timer_startzTimerQT._timer_start   s    r   c                 8    | j                   j                          y rz   )r   stopr}   s    r   r   zTimerQT._timer_stop   s    r   )r   r   r   __doc__r   r   r   r   r   r   __classcell__r   s   @r   r   r      s$    7*00r   r   c                      e Zd ZdZeZ ej                  d       Zde	j                  fde	j                  fde	j                  fde	j                  fde	j                  ffD  ci c]  \  }}t        t!        d      |      | c}}}}} Zd$fd		Zd
 Zd Zd Zd Zd$dZd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d%dZ&d$dZ'fdZ(d  Z)d$d!Z*d" Z+d# Z,xZ-S c c}}}}} w )&FigureCanvasQTqtc                     t         S rz   )FigureManagerQT)clss    r   r   zFigureCanvasQT.<lambda>   s    ? r   
LeftButtonRightButtonMiddleButtonXButton1XButton2zQtCore.Qt.MouseButtonc                    t                t        | 	  |       d| _        d| _        d | _        d| _        | j                  t        d      j                         | j                  d        | j                  | j                           t        j                  t        j                  d            }| j!                  |       y )N)figureFc                      y rz   r   painters    r   r   z)FigureCanvasQT.__init__.<locals>.<lambda>   s    r   zQtCore.Qt.WidgetAttributeTwhite)r   rh   r   _draw_pending_is_drawing_draw_rect_callback_in_resize_eventr   r   WA_OpaquePaintEventsetMouseTrackingresizeget_width_heightr   QPaletteQColor
setPalette)r~   r   paletter   s      r   r   zFigureCanvasQT.__init__   s    '" #7  %-.BB	Dd#T**,-..g!67 r   c                     | j                  t        |             rDt        j                  | j	                         | j	                               }| j                  |       y y rz   )_set_device_pixel_ratior   r   QResizeEventsizeresizeEventr~   events     r   _update_pixel_ratioz"FigureCanvasQT._update_pixel_ratio   sJ    ''(:4(@A &&tyy{DIIK@EU# Br   c                     | j                          |K|j                  j                  | j                          |j                  j                  | j                          y y rz   )r   physicalDotsPerInchChangedr   logicalDotsPerInchChanged)r~   screens     r   _update_screenzFigureCanvasQT._update_screen   sM      "--55d6N6NO,,44T5M5MN r   c                     | j                         j                         }|j                  j                  | j                         | j	                  |j                                y rz   )windowwindowHandlescreenChangedr   r   r   )r~   r   r   s      r   	showEventzFigureCanvasQT.showEvent   sF     ++-$$T%8%89FMMO,r   c                 X    | j                  t        j                  t        |             y )N)cursor)	setCursorr   check_getitemcursordr~   r  s     r   
set_cursorzFigureCanvasQT.set_cursor   s    t))'&ABr   c                    |.| j                  t        j                  j                               }n9t	        |d      r|j                         }nt	        |d      r|j                         }|j                         }| j                  j                  j                  | j                  z  |j                         z
  }|| j                  z  || j                  z  fS )aI  
        Calculate mouse coordinates in physical pixels.

        Qt uses logical pixels, but the figure is scaled to physical
        pixels for rendering.  Transform to physical pixels so that
        all of the down-stream transforms work as expected.

        Also, the origin is different and needs to be corrected.
        positionpos)mapFromGlobalr   QCursorr	  hasattrr  xr   bboxheightdevice_pixel_ratioy)r~   r	  r  r  s       r   mouseEventCoordszFigureCanvasQT.mouseEventCoords   s     ;$$U]]%6%6%89CS*%,,.CS% '')CEEGKK##d&=&==G4***A0G0G,GGGr   c                 ^    t        d| g| j                  |      d|ij                          y )Nfigure_enter_eventguiEvent)r   r  _processr   s     r   
enterEventzFigureCanvasQT.enterEvent  s1    *D 	&,,U3	&$	&&.hjr   c                     t         j                  j                          t        d| g| j	                         d|ij                          y )Nfigure_leave_eventr  )r   r{   restoreOverrideCursorr   r  r  r   s     r   
leaveEventzFigureCanvasQT.leaveEvent  sA    446*D 	&,,.	&$	&&.hjr   c                     | j                   j                  |j                               }|0t        d| g| j	                  |      |d|ij                          y y )Nbutton_press_eventr  buttondr   buttonr   r  r  r~   r   r   s      r   mousePressEventzFigureCanvasQT.mousePressEvent  s^    !!%,,.1+T '--e4'6<' %''/xz r   c                     | j                   j                  |j                               }|1t        d| g| j	                  |      |d|dj                          y y )Nr  T)dblclickr  r  r!  s      r   mouseDoubleClickEventz$FigureCanvasQT.mouseDoubleClickEvent   sa    !!%,,.1+T '--e4'6<'GK %''/xz r   c                 ^    t        d| g| j                  |      d|ij                          y )Nmotion_notify_eventr  )r   r  r  r   s     r   mouseMoveEventzFigureCanvasQT.mouseMoveEvent'  s1    ($ 	#))%0	#!	##+8:r   c                     | j                   j                  |j                               }|0t        d| g| j	                  |      |d|ij                          y y )Nbutton_release_eventr  r  r!  s      r   mouseReleaseEventz FigureCanvasQT.mouseReleaseEvent,  s^    !!%,,.1-t '--e4'6<' %''/xz r   c                    |j                         j                         s/t        j                  j	                         j                         dk(  r"|j                         j                         dz  }n|j                         j                         }|r/t        d| g| j                  |      ||dj                          y y )Nxcbx   scroll_event)stepr  )
pixelDeltaisNullr   r{   r|   platformName
angleDeltar  r   r  r  )r~   r   stepss      r   
wheelEventzFigureCanvasQT.wheelEvent3  s     %%'))224AACuL$$&((*S0E$$&((*E~t '--e4';@ %''/xz r   c                     | j                  |      }|.t        d| |g| j                         d|ij                          y y )Nkey_press_eventr  _get_keyr   r  r  r~   r   keys      r   keyPressEventzFigureCanvasQT.keyPressEvent@  sJ    mmE"?&%002%#%%-XZ r   c                     | j                  |      }|.t        d| |g| j                         d|ij                          y y )Nkey_release_eventr  r9  r;  s      r   keyReleaseEventzFigureCanvasQT.keyReleaseEventG  sJ    mmE"?($%002%#%%-XZ r   c                    | j                   ry d| _         	 |j                         j                         | j                  z  }|j                         j	                         | j                  z  }| j
                  j                  }||z  }||z  }| j
                  j                  ||d       t        j                  j                  | |       t        d|       j                          | j                          d| _         y # d| _         w xY w)NTF)forwardresize_event)r   r   widthr  r  r   dpiset_size_inchesr   QWidgetr   r   r  	draw_idle)r~   r   whdpivalwinchhinchs          r   r   zFigureCanvasQT.resizeEventN  s       $	*

""$t'>'>>A

##%(?(??A[[__FJEJEKK''ue'D))$6-668NN$)D!ED!s   CC< <	Dc                 T    | j                         \  }}t        j                  ||      S rz   )r   r   QSize)r~   rI  rJ  s      r   sizeHintzFigureCanvasQT.sizeHinta  s%    $$&1||Aq!!r   c                 .    t        j                  dd      S )N
   )r   rO  r}   s    r   minumumSizeHintzFigureCanvasQT.minumumSizeHinte  s    ||B##r   c                    |j                         }t        |j                               }t        D cg c](  \  }}||k7  r||z  rt        |   j                  dd      * }}}	 t        |   }dj                  ||gz         S c c}}w # t        $ rI |t        j                  kD  rY y t        |      }d|v r|j                  d       n|j                         }Y lw xY w)NrH   ctrlrE   +)r<  r   	modifiers_MODIFIER_KEYSSPECIAL_KEYSreplaceKeyErrorr   
maxunicodechrremovelowerjoin)r~   r   	event_key
event_modsr   r<  modss          r   r:  zFigureCanvasQT._get_keyh  s    IIK	U__./
 !/:C#
S(8 S!)))V< : :	" y)C$ xxu%%1:  	" 3>>)i.C $G$iik	"s   -B$	B C&1CCc                 \    t         j                  j                         j                          y rz   )r   r{   r|   processEventsr}   s    r   flush_eventszFigureCanvasQT.flush_events  s    '')779r   c                 |   t        | d      r%| j                  j                         rt        d      t	        j
                         x| _        }|dkD  r6t        j                  j                  t        |dz        |j                        }t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)N_event_loopzEvent loop already runningr   i  )r  rh  	isRunningr   r   
QEventLoopr   
singleShotintr   r    r   _exec)r~   r   
event_loop_s       r   start_event_loopzFigureCanvasQT.start_event_loop  s    4'D,<,<,F,F,H;<<(.(9(9(;;:Q;((Wt^)<jooNA#J/ 	(OOJ'	( 	( 	(s   B22B;c                 R    t        | d      r| j                  j                          y y )Nrh  )r  rh  r   r   s     r   stop_event_loopzFigureCanvasQT.stop_event_loop  s#    4'!!# (r   c                     | j                   ryt        j                  | d      5  t        |           ddd       | j                          y# 1 sw Y   xY w)z5Render the figure, and queue a request for a Qt draw.NT)r   )r   r   _setattr_cmrh   drawupdate)r~   r   s    r   ru  zFigureCanvasQT.draw  sH     t6 	GLN		 	s   AAc                     t        | dd      s@t        | dd      s2d| _        t        j                  j	                  d| j
                         yyy)z9Queue redraw of the Agg buffer and request Qt paintEvent.r   Fr   Tr   N)getattrr   r   r   rk  
_draw_idler}   s    r   rH  zFigureCanvasQT.draw_idle  sF     ou5mU3!%DMM$$Q8 4 6r   c                 0   |"| j                   r| j                   j                  }|j                  D cg c]  }t        || j                  z         c}\  }}}}||z   }| j                  || j                         j                         |z
  ||       y c c}w rz   )r   r  boundsrl  r  repaintrectr  )r~   r  ptlbrI  rJ  ts           r   blitzFigureCanvasQT.blit  s}    <DKK;;##DBF++NBc"t6667N
1aEQ		**,q0!Q7 Os   Bc                 P   | j                         5  | j                  s
	 d d d        y d| _        | j                         dk  s| j                         dk  r
	 d d d        y 	 | j	                          d d d        y # t
        $ r t        j                          Y (w xY w# 1 sw Y   y xY w)NFr   )_idle_draw_cntxr   r  rD  ru  	Exception	traceback	print_excr}   s    r   ry  zFigureCanvasQT._draw_idle  s    !!# 
	&%%
	& 
	& "'D{{}q DJJL1$4
	& 
	&&		
	& 
	&  &##%&
	& 
	&s.   B.B A99BBBBB%c                     	 |?|D cg c]  }t        | j                  z         c}\  }}|z   |z   	 	fd}nd }| _         j                          y c c}w )Nc                 
   t        j                  t        j                  d      dj                  z        }|j	                  ddg       t        j                  d      dft        j                  d      dffD ]  \  }}|j                  |       |j                  |       | j                  |       | j                         | j                         | j                         | j                          y )Nblackr      r   r   )	r   QPenr   r  setDashPatternsetDashOffsetsetColorsetPendrawLine)	r   pencoloroffsetr~   x0x1y0y1s	       r   r   z9FigureCanvasQT.drawRectangle.<locals>._draw_rect_callback  s    jjLL)///
 ""Aq6*g.2g.2& 5ME6 %%f-LL'NN3' $$RR4$$RR4$$RR4$$RR45r   c                      y rz   r   r   s    r   r   z9FigureCanvasQT.drawRectangle.<locals>._draw_rect_callback  s    r   )rl  r  r   rv  )
r~   r}  r~  rI  rJ  r   r  r  r  r  s
   `     @@@@r   drawRectanglezFigureCanvasQT.drawRectangle  sk     HLM"CT%<%< <=MLBAqaBaB5 5*#6 7 Ns   A"rz   )r   ).r   r   r   required_interactive_frameworkr   
_timer_clsr   classpropertymanager_classr   LEFTRIGHTMIDDLEBACKFORWARDrx  r   r  r   r   r   r   r  r  r  r  r"  r%  r(  r+  r6  r=  r@  r   rP  rS  r:  rf  rp  rr  ru  rH  r  ry  r  r   ).0kvrx  r   r   s   00000@r   r   r      s-   %)"J&D&&'BCM ;++,K--.[//0))*,,-C
 :>!Q-.2A5G!"$O-CH,1
122.
2200*&"$!&F:	($

98&Qs   & C+r   c                   @     e Zd Z ej                         Z fdZ xZS )
MainWindowc                 X    | j                   j                          t        |   |       y rz   )closingemitrh   
closeEvent)r~   r   r   s     r   r  zMainWindow.closeEvent  s     5!r   )r   r   r   r   Signalr  r  r   r   s   @r   r  r    s    fmmoG" "r   r  c                   L     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
r   z
    Attributes
    ----------
    canvas : `FigureCanvas`
        The FigureCanvas instance
    num : int or str
        The Figure number
    toolbar : qt.QToolBar
        The qt.QToolBar
    window : qt.QMainWindow
        The qt.QMainWindow
    c                     t                _        t        	   ||        j                  j                  j                   fd        j                  j                  j                   j                         t        j                  dk7  rNt        t        j                  d            }t        j                  |      } j                  j                  |       d j                  _         j                   rN j                  j#                   j                           j                   j%                         j'                         }nd}|j%                         }|j'                         }||z   } j                  j)                  |j+                         |        j                  j-                   j.                         t1        j2                         r4 j                  j5                           j.                  j7                           j.                  j9                  t;        d      j<                          j.                  j?                           j                  jA                          y )Nc                  L    t        d j                        j                         S )Nclose_event)r   canvasr  r}   s   r   r   z*FigureManagerQT.__init__.<locals>.<lambda>  s    J}dkk:CCE r   rG   r   Fr   zQtCore.Qt.FocusPolicy)!r  r   rh   r   r  r   _widgetclosedr   r   r   r   r   r   r   r   _destroyingtoolbar
addToolBarrP  r  r   rD  setCentralWidgetr  r   is_interactiveshowrH  setFocusPolicyr   StrongFocussetFocusraise_)
r~   r  numr   r   
tbs_heightcs	cs_heightr  r   s
   `        r   r   zFigureManagerQT.__init__  s    l%##E	G 	##D$6$67<<8#,,-DEFE;;u%DKK%%d+"'<<KK""4<<0..0779JJ __IIK	Z'288:v.$$T[[1KKKK!!# 	""5)@#A#M#MNr   c                     | j                   j                         r| j                   j                          y | j                   j                          y rz   )r   isFullScreen
showNormalshowFullScreenr}   s    r   full_screen_togglez"FigureManagerQT.full_screen_toggle.  s2    ;;##%KK""$KK&&(r   c                     | j                   j                  ry d| j                   _        	 t        j                  |        y # t        $ r Y y w xY wNT)r   r  r   destroyr   r}   s    r   r  zFigureManagerQT._widgetclosed4  sA    ;;"""&	KK 		s   A   	AAc                    t        || j                  j                  z        }t        || j                  j                  z        }| j                  j	                         | j                  j	                         z
  }| j                  j                         | j                  j                         z
  }| j                  j                  ||       | j                  j                  ||z   ||z          y rz   )rl  r  r  r   rD  r  r   )r~   rD  r  extra_widthextra_heights        r   r   zFigureManagerQT.resize@  s     EDKK:::;Vdkk<<<=kk'')DKK,=,=,??{{))+dkk.@.@.BB5&)5;.0EFr   c                     | j                   j                          t        j                  d   r5| j                   j	                          | j                   j                          y y )Nzfigure.raise_window)r   r  r   rcParamsactivateWindowr  r}   s    r   r  zFigureManagerQT.showJ  sD    <<-.KK&&(KK  /r   c                    t         j                  j                         y | j                  j                  ry d| j                  _        | j
                  r| j
                  j                          | j                  j                          y r  )r   r{   r|   r   r  r  r  closer~   r   s     r   r  zFigureManagerQT.destroyP  s]    !!**,4;;"""&<<LL  "r   c                 6    | j                   j                         S rz   )r   windowTitler}   s    r   get_window_titlez FigureManagerQT.get_window_title[  s    {{&&((r   c                 :    | j                   j                  |       y rz   )r   setWindowTitle)r~   titles     r   set_window_titlez FigureManagerQT.set_window_title^  s    ""5)r   )r   r   r   r   r   r  r  r   r  r  r  r  r   r   s   @r   r   r     s2    )V)G!	)*r   r   c            	       $   e Zd Z ej                  e      Zg ej                  Zej                  eD  cg c]  ^}}| c}}} j                  d      dz   d       ddZd Zd Zd ZfdZfd	Zd
 Zd Zd Zd Zd Zd ZxZS c c}}} w )NavigationToolbar2QTSubplotsr   )	Customizez%Edit axis, curve and image parametersqt4_editor_optionsedit_parametersc           
         t         j                  j                  | |       | j                  t        j
                  j                  t        t        d      j                        t        t        d      j                        z               || _        i | _        d| _        | j                  D ]  \  }}}}|| j                          | j!                  | j#                  |dz         |t%        | |            }|| j                  |<   |dv r|j'                  d       |q|j)                  |        | j                  rt        j*                  d|       | _        | j,                  j/                  t        j
                  j1                  t        t        d      j2                        t        t        d      j4                        z               | j,                  j7                  t        j8                  t        d      j:                  t        d      j<                               | j?                  | j,                        }	|	jA                  d       tC        j                  | |       y)	z9coordinates: should we show the coordinates on the right?QtCore.Qt.ToolBarAreaN.png)zoompanT QtCore.Qt.AlignmentFlagQtWidgets.QSizePolicy.Policy)"r   QToolBarr   setAllowedAreasr   r   ToolBarArear   r   TopToolBarAreaBottomToolBarAreacoordinates_actions_subplot_dialog	toolitemsaddSeparator	addAction_iconrx  setCheckable
setToolTipQLabellocLabelsetAlignmentAlignmentFlag
AlignRightAlignVCentersetSizePolicyQSizePolicy	ExpandingIgnored	addWidget
setVisibler
   )
r~   r  parentr  texttooltip_text
image_filecallbackalabelActions
             r   r   zNavigationToolbar2QT.__init__l  s   ##D&1VYY22E12AABE12DDEFG 	H '#8< 
	/4D,
H|!!#NN4::j6.A#B#'x)@B*+h'.NN4(+LL.
	/ %,,R6DMMM&&vyy'>'>78CCD78EEFG(H I MM''	(=(=45??45==)  ..7K""4(##D&1r   c                    t        j                  d|      }|j                  |j                  j	                  dd            }t        |j                         r|n|      }t        j                  |      }t        |t        |              | j                         j                  | j                               j                         dk  r| j                         j                  | j                               }|j!                  t        j"                  d      t%        d      j&                        }|j)                  |       |j+                  |       t        j,                  |      S )z
        Construct a `.QIcon` from an image file *name*, including the extension
        and relative to Matplotlib's "images" data directory.
        imagesr  z
_large.png   r  zQtCore.Qt.MaskMode)r   r   	with_namenamerZ  r   existsr   QPixmapr   r   r   r  backgroundRolevalueforegroundRolecreateMaskFromColorr   r   MaskOutColorfillsetMaskr   )r~   r  path_regular
path_largefilenamepm
icon_colormasks           r   r  zNavigationToolbar2QT._icon  s    ++Hd;!++%%fl;=
Z%6%6%8zlK]]8$R!3D!9:<<> 3 3 56<<>D--d.A.A.CDJ))W%*+88:D GGJJJt{{2r   c                    | j                   j                  j                         }|s:t        j                  j                  | j                   j                         dd       y t        |      dk(  r|\  }n[|D cg c]  }|j                         xs |j                         xsz |j                  d      xsg |j                  d      xsT dj                  t        d |j                         |j                         g            xs dt        |      j                   d }}|D cg c]  }|j!                  |      dkD  s| }}t#        |      D ](  \  }}||   |v s||xx   d	t%        |      d
dz  cc<   * t        j&                  j)                  | j                   j                         dd|dd      \  }}|sy ||j+                  |         }t-        j.                  ||        y c c}w c c}w )NErrorzThere are no axes to edit.r   r9   r=   z - z<anonymous >z (id: z#x)r  zSelect axes:r   F)r  r   get_axesr   QMessageBoxwarningr  len	get_label	get_titler`  filter
get_xlabel
get_ylabeltyper   count	enumerateidQInputDialoggetItemindexfigureoptionsfigure_edit)	r~   axesaxtitlesr  duplicate_titlesiitemoks	            r   r  z$NavigationToolbar2QT.edit_parameters  s   {{!!**,!!))""$g/KMY!^CB     33V$3 W%3 

6$"--/(JKL	3
 d2h//023 F   $* FV\\%-@1-D F  F"4 72!9 001I6"R&A!66I7 !--55""$^VQ?HD" fll4()B!!"d+'  Fs   9B%G'$G,>G,c                    d| j                   v r5| j                   d   j                  | j                  j                  dk(         d| j                   v r6| j                   d   j                  | j                  j                  dk(         y y )Nr  PANr  ZOOM)r  
setCheckedmoder  r}   s    r   _update_buttons_checkedz,NavigationToolbar2QT._update_buttons_checked  sg    DMM!MM% ++DIINNe,CDT]]"MM&!,,TYY^^v-EF #r   c                 >    t        |   |  | j                          y rz   )rh   r  r?  r~   r   r   s     r   r  zNavigationToolbar2QT.pan  s    T$$&r   c                 >    t        |   |  | j                          y rz   )rh   r  r?  rA  s     r   r  zNavigationToolbar2QT.zoom  s    d$$&r   c                     | j                   j                  |       | j                  r| j                  j	                  |       y y rz   )messager  r  r  setTextr~   ss     r   set_messagez NavigationToolbar2QT.set_message  s4    !MM!!!$ r   c                     | j                   j                  j                  j                  }||z
  }||z
  }||||z
  ||z
  fD cg c]  }t	        |       }}| j                   j                  |       y c c}w rz   )r  r   r  r  rl  r  )	r~   r   r  r  r  r  r  valr}  s	            r   draw_rubberbandz$NavigationToolbar2QT.draw_rubberband  so    ##((//b[b[%'R"Wb2g$>?SC??!!$' @s   A3c                 :    | j                   j                  d        y rz   )r  r  r}   s    r   remove_rubberbandz&NavigationToolbar2QT.remove_rubberband  s    !!$'r   c                 T     j                   \t         j                  j                   j                  j	                                _          j                  j                  d fd        j                   j                           j                   j                           j                   S )Nr  c                 8    j                   j                         S rz   )r  reject)er~   s    r   r   z9NavigationToolbar2QT.configure_subplots.<locals>.<lambda>  s    )=)=)D)D)F r   )r  SubplotToolQtr  r   r  mpl_connectupdate_from_current_subplotparsr  r}   s   `r   configure_subplotsz'NavigationToolbar2QT.configure_subplots  s    '#0""DKK$6$6$8$:D KK##FH<<>!!####r   c           
      ,   | j                   j                         }t        |j                               }| j                   j	                         }t
        j                  j                  t        j                  d         }t
        j                  j                  || j                   j                               }g }d }|D ]F  \  }	}
dj                  |
D cg c]  }d|z  	 c}      }|	d|d}||
v r|}|j                  |       H dj                  |      }t        j                  | j                   j                         d|||      \  }}|r\|dk7  r0t
        j                  j!                  |      t        j                  d<   	 | j                   j"                  j%                  |       y y c c}w # t&        $ r\}t(        j*                  j-                  | d	t/        |      t1        d
      j2                  t1        d
      j4                         Y d }~y d }~ww xY w)Nzsavefig.directory z*.%sz (r   z;;zChoose a filename to save tor  zError saving filez$QtWidgets.QMessageBox.StandardButton)r  get_supported_filetypes_groupedsorteditemsget_default_filetypeospath
expanduserr   r  r`  get_default_filenameappendr   _getSaveFileNamer  dirnamer   savefigr  r   r"  criticalr   r   OkNoButton)r~   r   	filetypessorted_filetypesdefault_filetype	startpathr   filtersselectedFilterr  extsext	exts_listr'  fnamerQ  s                   r   save_figurez NavigationToolbar2QT.save_figure  s   KK??A	!)//"34;;;;=GG&&s||4G'HI	Y(H(H(JK* 	#JD$$!?3&3,!?@I"&	2F4'!'NN6"	# ))G$!22KK "@%^%v B46GGOOE4J01L""**51  "@   L%%..-s1v@ADD@AJJL LLs   F)
%F. .	H7AHHc                 Z   | j                   j                  dkD  }| j                   j                  t        | j                   j                        dz
  k  }d| j                  v r| j                  d   j                  |       d| j                  v r| j                  d   j                  |       y y )Nr   r   backrB  )
_nav_stack_posr$  	_elementsr  
setEnabled)r~   can_backwardcan_forwards      r   set_history_buttonsz(NavigationToolbar2QT.set_history_buttons  s    ++a/oo**S1J1J-Ka-OOT]]"MM&!,,\:%MM)$//< &r   r  )r   r   r   r   r  r   rD  r
   r  r+   r0  r   r  r  r?  r  r  rH  rK  rM  rU  rq  rz  r   )r  r  ro  r   s   000@r   r  r  b  s    fmmC G/$../I'((($(..z:Q>	23&2P.,<G''%
(($L@=S 	)s   Br  c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )rR  c           	         t         |           | j                  t        j                  t        t        j                  d                         | j                  d       i | _	        t        j                         }| j                  |       dg dd| j                  fgfdddgd	| j                  fd
| j                  fd| j                   fgffD ]  \  }}}t        j"                         }|j%                  |       t        j&                  |      }|j)                  |       t        j*                  |      }	|D ]  }
t        j,                         x| j                  |
<   }|j/                  dd       |j1                  d       |j3                  d       |j5                  d       |j6                  j9                  | j:                         |	j=                  |
|        |j?                  d       |D ]m  \  }
}t        j@                  |
      }|jC                  d       |jD                  j9                  |       |j)                  |       |
dk(  s^|jG                          o  || _$        i | _%        d | _&        | jO                          y )Nzimages/matplotlib.pngSubplotToolBorders)topbottomr9   r=   zExport valuesSpacingshspacewspacezTight layoutResetCloser   r   r  g{Gzt?F)(rh   r   r   r   r   r   r   r   setObjectName
_spinboxesr   QHBoxLayout	setLayout_export_values_tight_layout_resetr  QVBoxLayout	addLayout	QGroupBoxr   QFormLayoutQDoubleSpinBoxsetRangesetDecimalssetSingleStepsetKeyboardTrackingvalueChangedr   _on_value_changedaddRow
addStretchQPushButtonsetAutoDefaultclickedr  _figure	_defaults_export_values_dialogrT  )r~   	targetfigr  main_layoutgroup	spinboxesbuttonslayoutboxinnerr  spinboxmethodr   r   s                 r   r   zSubplotToolQt.__init__  sL   5;;$$%<=>@ 	A=)++-{#3"D$7$789; H%!4#5#56DKK(DJJ')*	*+ 	&%E9g **,F!!&)%%e,CS!))#.E! ,2;2J2J2LL%  A&##A&%%e,++E2$$,,T-C-CDT7+, a  ' &f"..t4%%e,&&v.  (7?OO%&/	&> !%)",,.r   c           	          | j                   j                         D ci c]&  \  }}|t        | j                  j                  |      ( c}}| _        | j                          y c c}}w rz   )r  rZ  rx  r  subplotparsr  r  )r~   r  r  s      r   rT  z-SubplotToolQt.update_from_current_subplotparsG  sT    /3/D/D/FH+dG "74<<+C+CT#JJ HHs   +A#c                    t        j                         | _        t        j                         }| j                  j	                  |       t        j
                         }|j                  d       |j                  |       |j                  dj                  d | j                  j                         D                     |j                         }|j                  t        j                  |j!                         j#                               j%                  d|j'                               j)                         dz          |j+                  |       | j                  j-                          y )NTz,
c              3   N   K   | ]  \  }}| d |j                         d  yw)=z.3N)r  )r  attrr  s      r   	<genexpr>z/SubplotToolQt._export_values.<locals>.<genexpr>V  s2      E(4 q 45 Es   #%r      )r   QDialogr  r  r  QPlainTextEditsetReadOnlyr   setPlainTextr`  r  rZ  maximumSize	setHeightr   QFontMetricsdocumentdefaultFontr   toPlainTextr  setMaximumSizer  )r~   r  r  r   s       r   r  zSubplotToolQt._export_valuesL  s    &/%6%6%8"&&("",,V4'')JJ E,0OO,A,A,CE E	F
 !t}}::<=T!T%%'(B7	8 	D!""'')r   c                    | j                   }dD ]U  \  }}||   j                  ||   j                         dz          ||   j                  ||   j                         dz
         W  | j                  j
                  di |j                         D ci c]  \  }}||j                          c}} | j                  j                  j                          y c c}}w )N))r  r  )r9   r=   gMbP?r   )	r  
setMinimumr  
setMaximumr  subplots_adjustrZ  r  rH  )r~   r  r_  higherr  r  s         r   r  zSubplotToolQt._on_value_changeda  s    OO	C 	JME6f((5)9)?)?)AD)HIe''	&(9(?(?(AD(HI	J 	%$$ 	N:C//:KLwtW]]_$L	N%%' Ms   Cc                 j   | j                   j                          | j                  j                         D ]X  \  }}|j	                  d       |j                  t        | j                   j                        |          |j	                  d       Z | j                   j                  j                          y )NTF)
r  tight_layoutr  rZ  blockSignalssetValuevarsr  r  rH  )r~   r  r  s      r   r  zSubplotToolQt._tight_layoutk  s    !!#!__224 	(MD'  &T$,,":":;DAB  '	( 	%%'r   c                     | j                   j                         D ]J  \  }}|j                  dd       |j                  d       |j	                  |       |j                  d       L | j                          y )Nr   r   TF)r  rZ  r  r  r  r  )r~   r  r  s      r   r  zSubplotToolQt._resets  sj    "nn224 	(NGUQ"  &U#  '		(
 	 r   )
r   r   r   r   rT  r  r  r  r  r   r   s   @r   rR  rR    s"    */X
**((!r   rR  c                   2    e Zd ZddZd Zd Zd Zd Zd Zy)		ToolbarQtNc           
         t        j                  | |       t        j                  j                  | |       | j	                  t
        j                  j                  t        t        d      j                        t        t        d      j                        z               t        j                  d      }|j                  t
        j                  j                  t        t        d      j                        t        t        d      j                         z               |j#                  t        j$                  t        d      j&                  t        d      j(                               | j+                  |      | _        i | _        i | _        y )Nr  r  r  r  )r   r   r   r  r  r   r   r  r   r   r  r  r  r  r  r  r  r  r  r  r  r   _message_action
_toolitems_groups)r~   toolmanagerr  message_labels       r   r   zToolbarQt.__init__}  s4   ""45##D&1VYY22E12AABE12DDEFG 	H "((,""699#:#:E34??@E34AABC$D 	E 	##I$9$901;;0199%
 	  $~~m<r   c                     t        j                         }|r%|j                  t        j	                   |             |j                         |r|j                  |        fd}|r-|j                  d       |j                  j                  |       n|j                  j                  |        j                  j                  g         j                  |||        j                     j                  ||f       y )Nc                  (    j                          y rz   )trigger_tool)r  r~   s   r   handlerz'ToolbarQt.add_toolitem.<locals>.handler  s    d#r   T)r   QToolButtonsetIconr  r  rE  r  r  toggledr   r  r  
setdefault_add_to_groupr`  )	r~   r  r  r  r  descriptiontoggler   r  s	   ``       r   add_toolitemzToolbarQt.add_toolitem  s     &&t,NN/55dJGHtk*	$%NN""7+NN""7+""4,5$9$$fg%67r   c                    | j                   j                  |g       }|s,| j                  | j                        }|j	                  |       ||   }| j                  ||      }|j                  ||       || j                   |<   y rz   )r  r   insertSeparatorr  r`  insertWidgetr+   )	r~   r  r  r   r  grsepbeforewidgets	            r   r  zToolbarQt._add_to_group  ss    \\eR(&&t';';<CIIcNH""662
		(F# Ur   c                     || j                   vry | j                   |   D ]L  \  }}|j                  j                  |       |j                  |       |j                  j	                  |       N y rz   )r  r  
disconnectr=  r   )r~   r  r  r   r  s        r   toggle_toolitemzToolbarQt.toggle_toolitem  s_    t&#t4 	,OFGNN%%g.g&NN""7+	,r   c                 n    | j                   |   D ]  \  }}|j                  d         | j                   |= y rz   )r  	setParent)r~   r  r   r  s       r   remove_toolitemzToolbarQt.remove_toolitem  s8    #t4 	#OFGT"	#OOD!r   c                 X    | j                  | j                        j                  |       y rz   )widgetForActionr  rE  rF  s     r   rH  zToolbarQt.set_message  s!    T112::1=r   rz   )	r   r   r   r   r  r  r  r  rH  r   r   r   r  r  |  s     $8,!,"
>r   r  c                   $     e Zd Z fdZd Z xZS )ConfigureSubplotsQtc                 2    t        |   |i | d | _        y rz   )rh   r   r  r   s      r   r   zConfigureSubplotsQt.__init__  s    $)&)#r   c                 .    t         j                  |        y rz   )r  rU  r  s     r   triggerzConfigureSubplotsQt.trigger  s    //5r   )r   r   r   r   r  r   r   s   @r   r  r    s    $6r   r  c                       e Zd Zd Zy)SaveFigureQtc                 J    t         j                  | j                                y rz   )r  rq  "_make_classic_style_pseudo_toolbarr  s     r   r  zSaveFigureQt.trigger  s    ((335	7r   Nr   r   r   r  r   r   r   r  r    s    7r   r  z3.5ToolSetCursorrw   c                       e Zd Zd Zy)SetCursorQtc                 L    t         j                  | j                         |       y rz   )r  r  r  r  s     r   r  zSetCursorQt.set_cursor  s    ''335v	?r   N)r   r   r   r  r   r   r   r  r    s    ?r   r  c                       e Zd Zd Zd Zy)RubberbandQtc                 T    t         j                  | j                         d ||||       y rz   )r  rK  r  )r~   r  r  r  r  s        r   rK  zRubberbandQt.draw_rubberband  s'    ,,335tRR	Mr   c                 J    t         j                  | j                                y rz   )r  rM  r  r}   s    r   rM  zRubberbandQt.remove_rubberband  s    ..335	7r   N)r   r   r   rK  rM  r   r   r   r  r    s    M7r   r  c                       e Zd Zd Zy)HelpQtc                 b    t         j                  j                  d d| j                                y )NHelp)r   r"  information_get_help_htmlr  s     r   r  zHelpQt.trigger  s#    ))$8K8K8MNr   Nr  r   r   r   r  r    s    Or   r  c                       e Zd Zd Zy)ToolCopyToClipboardQTc                     | j                   j                         }t        j                  j	                         j                         j                  |       y rz   )r  grabr   r{   r|   	clipboard	setPixmap)r~   r   r   pixmaps       r   r  zToolCopyToClipboardQT.trigger  s:    !!#'')335??Gr   Nr  r   r   r   r  r    s    Hr   r  c                   (    e Zd ZeZeZeZe	d        Z
y)
_BackendQTc                      t         j                  j                         } t        |       5  t	        j
                  |        d d d        y # 1 sw Y   y xY wrz   )r   r{   r|   r    r   rm  )qapps    r   mainloopz_BackendQT.mainloop  s?    %%..0#D) 	"OOD!	" 	" 	"s   A		AN)r   r   r   r   backend_versionr   FigureCanvasr   FigureManagerstaticmethodr  r   r   r   r  r    s#    !O!L#M" "r   r  )W	functoolsr\  r   r  r   r   r   r   r   matplotlib._pylab_helpersr   matplotlib.backend_basesr   r   r	   r
   r   r   r   r   r   r   r   r   r   +matplotlib.backends.qt_editor.figureoptionsbackends	qt_editorr1  r  r   r   r   r   r   r   r   r   r   r   r   r    r   rx  rY  rX  MOVEHANDPOINTERSELECT_REGIONWAITRESIZE_HORIZONTALRESIZE_VERTICALr  caching_module_getattrrv   	lru_cacher   r   rG  r   QMainWindowr  r   r  r  r  rR  r  _register_tool_classConfigureSubplotsBaser  SaveFigureBaser  r   SetCursorBaser  RubberbandBaser  ToolHelpBaser  ToolCopyToClipboardBaser  _toolbar2_class_toolmanager_toolbar_classexportr  )r  r  r   r<  s   0000r   <module>r-     sM    	 
   1 1 )B B B B D C    '@ '@'@ 	''@ 	 	'@
 	'@ 	!'@ 	!'@ 	'@ 	!'@ 	'@ 	'@ 	'@ 	'@ 	'@ 	'@  	!'@" 	!#'@$ 	%%'@& 	''@* 
S\\X%=	5I+'@, 
s||x7VYG-'@. 	/'@0 	&1'@2 	3'@4 	5'@6 	7'@8 	9'@: 	;'@< 	='@> 	?'@@ 	A'@B 	C'@D 	E'@F 	G'@H 	I'@J 	!K'@L 	!M'@)7;q!GGE/*A./2)`	 	S WU78#>?WU?+S124	 
'	+,	-(			.	|$		"	"O4		 	 /2?
6:aAwu,-q11
 F F F Q7 7ti :l%y'8'8 l^	"&& "j*' j*Zu=-y/A/A u=p_!I%% _!DA>!9#5#5 A>H $##N36-== 6 46 $##N37=// 7 47 O4?--- ? 5? $##N37=// 7 47 $##N3O]'' O 4O
 $##N3HMAA H 4H #7 -6 * 
	" 	" 	"y)Z	
s   % N4N$&N*