
    ^jL                     n   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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' g dd	d
dddddddddddddddddejP                  dk7  rdndfdejP                  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 jT                  jV                  |             |+ c}} Z,d1D cg c]K  \  }} e& e)e jT                  jZ                  |             e& e)e jT                  jV                  |            fM c}}Z.ej^                  d2fej`                  d3fejb                  d4fejd                  d5fejf                  d6fejh                  d7fejj                  d8ffD  ci c]#  \  } }|  e)e jT                  jl                  |      % c}} Z7 e jp                  d      d9        Z9d: Z: G d; d<e      Z; G d= d>ee"jx                        Z= G d? d@e"j|                        Z? G dA dBe      Z@ G dC dDe!j                        ZB G dE dFee"j                        ZD G dG dHe"j                        ZF G dI dJee"j                        ZG ej                  e=       G dK dLej                               ZJ ej                  e=       G dM dNej                               ZL ej                  e=       G dO dPej                               ZN ej                  e=       G dQ dRej                               ZP ej                  e=       G dS dTej                               ZReDe@_S        eGe@_T        ej                   G dU dVe             ZVyc c}} w c c}}w c c}} w )W    N)_apibackend_toolscbook)Gcf)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2	TimerBasecursorsToolContainerBaseMouseButton
CloseEventKeyEventLocationEvent
MouseEventResizeEvent_allow_interrupt   )	qt_compat)QtCoreQtGui	QtWidgetsQtSvg__version__QT_API_to_int
_isdeleted)
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)Key_F11f11)Key_F12f12)Key_Super_Lsuper)Key_Super_Rrg   ))ControlModifierrD   )AltModifierrJ   )ShiftModifierrB   )MetaModifierrH   SizeAllCursorPointingHandCursorArrowCursorCrossCursor
WaitCursorSizeHorCursorSizeVerCursorc                      t         j                  j                         } | =t        j                  j                         st        d      t        dv rd}d}nt        dv rd}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 |dk(  r8	 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;                  d       t1        j<                          |dk(  r)| j                  t        j                   j>                         | S # t$        $ r Y w xY w# t$        $ r Y w xY w)NzInvalid DISPLAY variable>   PyQt6PySide6)PyQt5PySide2   >   rw   rx   )ru   rv      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.
matplotlibrE   images/matplotlib.svgT) r   QApplicationinstance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setQuitOnLastWindowClosed_setup_new_guiappAA_UseHighDpiPixmaps)appother_bindings
qt_versionbindingmod
other_coreimageicons           i/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/backends/backend_qt.py_create_qAppr   \   s)   

 
 
)
)
+C { $$5579:: ))1NJ++1NJ566% 	G++//WIZ"89C3#3#3#<#<#>#J [[__y-@A
""*6(-() *))0	!**,- .99 	 ?&&33FII4U4UV	""FF		::FFH $$l^4<<8#,,-DEFE;;u%Dd#%%d+!?VYY;;<J# " 
  		s%   &7I! AI1 !	I.-I.1	I=<I=c                 ,     d } fd}t        ||      S )zEA context manager that allows terminating a plot by sending a SIGINT.c                      t        j                   j                         t         j                  j                  j                        }|j
                  j                   fd       }|S )Nc                  H    	  j                  d       y # t        $ r Y y w xY wNr   )recvBlockingIOError)rsocks   r   _may_clear_sockzF_allow_interrupt_qt.<locals>.prepare_notifier.<locals>._may_clear_sock   s'    

1"  s    	!!)r   QSocketNotifierfilenoTypeRead	activatedconnect)r   snr   s   `  r   prepare_notifierz-_allow_interrupt_qt.<locals>.prepare_notifier   sP    ##ELLNF4J4J4O4O4T4TU				 
	  	    c                    | j                          t        j                  j                  | t        j                  j
                  j                         t        d      rj                          j                          y )NcloseAllWindows)
deleteLaterr   QCoreApplicationsendPostedEventsQEventr   DeferredDeletehasattrr   quit)r   qapp_or_eventloops    r   handle_sigintz*_allow_interrupt_qt.<locals>.handle_sigint   sW    
00V]]5G5G5V5VW$&78--/ r   )r   )r   r   r   s   `  r   _allow_interrupt_qtr      s    
,! ,m<<r   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 N)r   QTimer_timertimeoutr   	_on_timerrg   __init__selfargskwargs	__class__s      r   r   zTimerQT.__init__   s@     mmo##DNN3$)&)r   c                 P    t        | j                        s| j                          y y r   )r   r   _timer_stopr   s    r   __del__zTimerQT.__del__   s!     $++& 'r   c                 N    | j                   j                  | j                         y r   )r   setSingleShot_singler   s    r   _timer_set_single_shotzTimerQT._timer_set_single_shot   s    !!$,,/r   c                 N    | j                   j                  | j                         y r   )r   setInterval	_intervalr   s    r   _timer_set_intervalzTimerQT._timer_set_interval   s    /r   c                 8    | j                   j                          y r   )r   startr   s    r   _timer_startzTimerQT._timer_start   s    r   c                 8    | j                   j                          y r   )r   stopr   s    r   r   zTimerQT._timer_stop   s    r   )__name__
__module____qualname____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         j"                  j                  |      |, c}}}}} Zd(fd		Z ej(                         d
        Z ej(                  ej.                        d        Zf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(e)d        Z*e)d(ddd       Z+d Z,d  Z-d)d!Z.d(d"Z/fd#Z0d$ Z1d(d%Z2d& Z3d' Z4xZ5S c c}}}}} w )*FigureCanvasQTqtc                     t         S r   )FigureManagerQT)clss    r   <lambda>zFigureCanvasQT.<lambda>   s    ? r   
LeftButtonRightButtonMiddleButtonXButton1XButton2Nc                    t                t        | 	  |       d| _        d| _        d | _        d| _        | j                  t        j                  j                  j                         | j                  d        | j                  | j                           t        j                   t        j"                  d            }| j%                  |       y )N)figureFc                      y r    painters    r   r   z)FigureCanvasQT.__init__.<locals>.<lambda>   s    r   Twhite)r   rg   r   _draw_pending_is_drawing_draw_rect_callback_in_resize_eventr   r   r   WidgetAttributeWA_OpaquePaintEventsetMouseTrackingresizeget_width_heightr   QPaletteQColor
setPalette)r   r   paletter   s      r   r   zFigureCanvasQT.__init__   s    '" #7  %&))33GGHd#T**,-..g!67 r   c                     | j                  | j                         xs d      rDt        j                  | j	                         | j	                               }| j                  |       y y r   )_set_device_pixel_ratiodevicePixelRatioFr   QResizeEventsizeresizeEventr   events     r   _update_pixel_ratioz"FigureCanvasQT._update_pixel_ratio   sT    ''&&(-A/
 &&tyy{DIIK@EU#/r   c                     | j                          |K|j                  j                  | j                          |j                  j                  | j                          y y r   )r  physicalDotsPerInchChangedr   logicalDotsPerInchChanged)r   screens     r   _update_screenzFigureCanvasQT._update_screen  sO     	  "--55d6N6NO,,44T5M5MN r   c                     |j                         t        j                  j                  j                  k(  r| j                          t        |   ||      S r   )typer   r   r   DevicePixelRatioChanger  rg   eventFilter)r   sourcer
  r   s      r   r  zFigureCanvasQT.eventFilter	  s?    ::<6==--DDD$$&w"6511r   c                    | j                         j                         }t        d t        j                         j                  dd      d d D              }|dk\  r"| j                          |j                  |        y |j                  j                  | j                         | j                  |j                                y )Nc              3   2   K   | ]  }t        |        y wr   )int).0xs     r   	<genexpr>z+FigureCanvasQT.showEvent.<locals>.<genexpr>  s     T1ATs   .   )ry   ry   )windowwindowHandletupler   r   splitr  installEventFilterscreenChangedr   r  r  )r   r
  r  current_versions       r   	showEventzFigureCanvasQT.showEvent  s     ++-T0A0G0GQ0OPRQR0STTf$$$&%%d+  (()<)<=0r   c                 X    | j                  t        j                  t        |             y )N)cursor)	setCursorr   getitem_checkedcursord)r   r'  s     r   
set_cursorzFigureCanvasQT.set_cursor  s    t++GFCDr   c                 x   |.| j                  t        j                  j                               }n9t	        |d      r|j                         }nt	        |d      r|j                         }|j                         }| j                         d   |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posr   )
mapFromGlobalr   QCursorr.  r   r-  r  r   ydevice_pixel_ratio)r   r.  r  r1  s       r   mouseEventCoordszFigureCanvasQT.mouseEventCoords  s     ;$$U]]%6%6%89CS*%,,.CS% '')CEEG!!#A&04***A0G0G,GGGr   c                     t         j                  j                         j                         }| j                  y t        d| g| j                  |      | j                  |      |dj                          y )Nfigure_enter_event	modifiersguiEvent)	r   r}   r~   queryKeyboardModifiersr   r   r3  _mpl_modifiers_process)r   r
  modss      r   
enterEventzFigureCanvasQT.enterEvent4  sm     %%..0GGI;;*D 	&,,U3	& $ 3 3D 9$	& '/hjr   c                     t         j                  j                          | j                  y t	        d| g| j                         | j                         |dj                          y )Nfigure_leave_eventr6  )r   r}   restoreOverrideCursorr   r   r3  r:  r;  r	  s     r   
leaveEventzFigureCanvasQT.leaveEvent?  s\    446;;*D 	&,,.	& $ 3 3 5$	& '/hjr   c                     | j                   j                  |j                               }|L| j                  ?t	        d| g| j                  |      || j                         |dj                          y y y )Nbutton_press_eventr6  buttondr   buttonr   r   r3  r:  r;  r   r
  rF  s      r   mousePressEventzFigureCanvasQT.mousePressEventH  sx    !!%,,.1$++"9+T '--e4'6<'!%!4!4!6 %' (0xz	 #:r   c                     | j                   j                  |j                               }|M| j                  @t	        d| g| j                  |      |d| j                         |dj                          y y y )NrC  T)dblclickr7  r8  rD  rG  s      r   mouseDoubleClickEventz$FigureCanvasQT.mouseDoubleClickEventP  s{    !!%,,.1$++"9+T '--e4'6<'GK!%!4!4!6 %' (0xz	 #:r   c                     | j                   y t        d| g| j                  |      | j                  |j	                               | j                         |dj                          y )Nmotion_notify_event)buttonsr7  r8  )r   r   r3  _mpl_buttonsrN  r:  r;  r	  s     r   mouseMoveEventzFigureCanvasQT.mouseMoveEventX  s`    ;;($ 	#))%0	#,,U]]_=!002!		# $,8:r   c                     | j                   j                  |j                               }|L| j                  ?t	        d| g| j                  |      || j                         |dj                          y y y )Nbutton_release_eventr6  rD  rG  s      r   mouseReleaseEventz FigureCanvasQT.mouseReleaseEventa  sx    !!%,,.1$++"9-t '--e4'6<'!%!4!4!6 %' (0xz	 #:r   c                    |j                         j                         s/t        j                  j	                         j                         dk(  r"|j                         j                         dz  }n|j                         j                         }|rK| j                  >t        d| g| j                  |      || j                         |dj                          y y y )Nxcbx   scroll_event)stepr7  r8  )
pixelDeltaisNullr   r}   r~   platformName
angleDeltar1  r   r   r3  r:  r;  )r   r
  stepss      r   
wheelEventzFigureCanvasQT.wheelEventi  s     %%'))224AACuL$$&((*S0E$$&((*ET[[,~t '--e4';@!%!4!4!6 %' (0xz	 -5r   c                     | j                  |      }|;| j                  .t        d| |g| j                         d|ij	                          y y y )Nkey_press_eventr8  _get_keyr   r   r3  r;  r   r
  keys      r   keyPressEventzFigureCanvasQT.keyPressEventw  sU    mmE"?t{{6&%002%#%%-XZ  7?r   c                     | j                  |      }|;| j                  .t        d| |g| j                         d|ij	                          y y y )Nkey_release_eventr8  ra  rc  s      r   keyReleaseEventzFigureCanvasQT.keyReleaseEvent~  sU    mmE"?t{{6($%002%#%%-XZ  7?r   c                 *   | j                   ry | j                  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   r  widthr2  heightdpiset_size_inchesr   QWidgetr  r   r;  	draw_idle)r   r
  whdpivalwinchhinchs          r   r  zFigureCanvasQT.resizeEvent  s      ;; $	*

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

##%(?(??A[[__FJEJEKK''ue'D))$6-668NN$)D!ED!s   CD	 		Dc                 T    | j                         \  }}t        j                  ||      S r   )r   r   QSize)r   rr  rs  s      r   sizeHintzFigureCanvasQT.sizeHint  s%    $$&1||Aq!!r   c                 .    t        j                  dd      S )N
   )r   rx  r   s    r   minimumSizeHintzFigureCanvasQT.minimumSizeHint  s    ||B##r   c                     t        |       } t        j                  j                         D ch c]  \  }}t        |      | z  r| c}}S c c}}w r   )r   r   rE  items)rN  maskrF  s      r   rO  zFigureCanvasQT._mpl_buttons  sJ    '"+9+A+A+G+G+I ,<44=7*  , 	, ,s   Aexcludec                    | ,t         j                  j                         j                         } t	        |       } t
        D cg c](  \  }}||k7  r| |z  rt        |   j                  dd      * c}}S c c}}w )NrF   ctrl)r   r}   r~   keyboardModifiersr   _MODIFIER_KEYSSPECIAL_KEYSreplace)r7  r  r  rd  s       r   r:  zFigureCanvasQT._mpl_modifiers  su    !..779KKMII&	 "08D#c>i$&6 S!)))V< 8 	8 8s   -A4c                 .   |j                         }| j                  |      }	 t        |   }dj                  ||gz         S # t        $ rI |t        j
                  kD  rY y t        |      }d|v r|j                  d       n|j                         }Y fw xY w)Nr  rC   +)
rd  r:  r  KeyErrorr   
maxunicodechrremovelowerjoin)r   r
  	event_keyr<  rd  s        r   rb  zFigureCanvasQT._get_key  s    IIK	""9"5	" y)C$ xxu%%#  	" 3>>)i.C $G$iik	"s   	A B 1BBc                 \    t         j                  j                         j                          y r   )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   r  	isRunningr   r   
QEventLoopr   
singleShotr  r   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 , 	(OOJ'	( 	( 	(s   B22B;c                 R    t        | d      r| j                  j                          y y )Nr  )r   r  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_cmrg   drawupdate)r   r   s    r   r  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   r  
_draw_idler   s    r   rq  zFigureCanvasQT.draw_idle  sF     ou5mU3!%DMM$$Q8 4 6r   c                      |" j                   r j                   j                  } fd|j                  D        \  }}}}||z   } j                  | j	                         j                         |z
  ||       y )Nc              3   N   K   | ]  }t        |j                  z          y wr   r  r2  r  ptr   s     r   r  z&FigureCanvasQT.blit.<locals>.<genexpr>  s!     NBc"t6667N   "%)r   bboxboundsrepaintrectrm  )r   r  lbrr  rs  ts   `      r   blitzFigureCanvasQT.blit  sb    <DKK;;##DN$++N
1aEQ		**,q0!Q7r   c                 f   | j                         5  | j                  s
	 d d d        y d| _        t        |       s&| 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   rm  rl  r  	Exception	traceback	print_excr   s    r   r  zFigureCanvasQT._draw_idle  s    !!# 
	&%%
	& 
	& "'D$4;;=A#59J
	& 
	&&		
	& 
	&  &##%&
	& 
	&s.   B'9B'+BB$!B'#B$$B''B0c                      |$ fd|D        \  }}|z   |z    fd}nd }| _          j                          y )Nc              3   N   K   | ]  }t        |j                  z          y wr   r  r  s     r   r  z/FigureCanvasQT.drawRectangle.<locals>.<genexpr>  s!     M"CT%<%< <=Mr  c                 
   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   r2  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 r   r   r   s    r   r   z9FigureCanvasQT.drawRectangle.<locals>._draw_rect_callback,  s    r   )r   r  )	r   r  rr  rs  r   r  r  r  r  s	   `    @@@@r   drawRectanglezFigureCanvasQT.drawRectangle  sO     MMLBAqaBaB5 5*#6 r   r   )r   )6r   r   r   required_interactive_frameworkr   
_timer_clsr   classpropertymanager_classr   LEFTRIGHTMIDDLEBACKFORWARDr  r   r   rE  r   Slotr  r   QScreenr  r  r%  r+  r3  r=  rA  rH  rK  rP  rS  r^  re  rh  r  ry  r|  staticmethodrO  r:  rb  r  r  r  r  rq  r  r  r  r   )r  kvr  r   r   s   00000@r   r   r      s   %)"J&D&&'BCM ;++,K--.[//0))*,,-:
 15A		%%q)1,G!  V[[]$ $ V[[O  O2

1EH,	1122.2200**"$ , , 8$ 8 8&4:	($

98&g	s   &/Er   c                   @     e Zd Z ej                         Z fdZ xZS )
MainWindowc                 X    | j                   j                          t        |   |       y r   )closingemitrg   
closeEvent)r   r
  r   s     r   r  zMainWindow.closeEvent5  s     5!r   )r   r   r   r   Signalr  r  r   r   s   @r   r  r  2  s    fmmoG" "r   r  c                   `     e Zd ZdZ fdZd Zd Zd Zed        Z	d Z
 f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                  | 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:        j<                  j>                  j@                         | j.                  jC                          | j                  jE                          y )NrE   r|   Fr   )#r  r  rg   r   r  r   _widgetclosedr   r   r   r   r   r   r   r   _destroyingtoolbar
addToolBarry  rm  r   rl  setCentralWidgetcanvasr   is_interactiveshowrq  setFocusPolicyr   r   FocusPolicyStrongFocussetFocusraise_)
r   r  numr   r   
tbs_heightcs	cs_heightrm  r   s
            r   r   zFigureManagerQT.__init__H  s    l%##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!!# 	""699#8#8#D#DEr   c                     | j                   j                         r| j                   j                          y | j                   j                          y r   )r  isFullScreen
showNormalshowFullScreenr   s    r   full_screen_togglez"FigureManagerQT.full_screen_togglep  s2    ;;##%KK""$KK&&(r   c                     t        d| j                        j                          | j                  j                  ry d| j                  _        	 t        j                  |        y # t        $ r Y y w xY w)Nclose_eventT)r   r  r;  r  r  r   destroyr   r   s    r   r  zFigureManagerQT._widgetclosedv  sX    =$++.779;;"""&	KK 		s   A$ $	A0/A0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 r   )r  r  r2  r  rl  rm  r   )r   rl  rm  extra_widthextra_heights        r   r   zFigureManagerQT.resize  s     EDKK:::;Vdkk<<<=kk'')DKK,=,=,??{{))+dkk.@.@.BB5&)5;.0EFr   c                     t         j                  j                         }|r*t        |      5  t	        j
                  |       d d d        y y # 1 sw Y   y xY wr   )r   r}   r~   r   r   r  )r   qapps     r   start_main_loopzFigureManagerQT.start_main_loop  sL    %%..0$T* &%& & & &s   AAc                     d| j                   _        | j                   j                          t        j                  d   r5| j                   j                          | j                   j                          y y )NFzfigure.raise_window)r  r  r  r   rcParamsactivateWindowr  r   s    r   r  zFigureManagerQT.show  sP    "'<<-.KK&&(KK  /r   c                 0   t         j                  j                         y | j                  j                  ry d| j                  _        | j
                  r| j
                  j                          | j                  j                          t        |           y NT)	r   r}   r~   r  r  r  r  closerg   r   r   r   s     r   r  zFigureManagerQT.destroy  sh    !!**,4;;"""&<<LL  "r   c                 6    | j                   j                         S r   )r  windowTitler   s    r   get_window_titlez FigureManagerQT.get_window_title  s    {{&&((r   c                 :    | j                   j                  |       y r   )r  setWindowTitle)r   titles     r   set_window_titlez FigureManagerQT.set_window_title  s    ""5)r   )r   r   r   r   r   r  r  r   classmethodr  r  r  r  r  r   r   s   @r   r   r   :  sF    &P)G & &!
)*r   r   c                   H     e Zd ZdZd	 fd	Zd Zd Zd Zd Zd Z	d Z
 xZS )
_IconEnginez
    Custom QIconEngine that automatically handles DPI scaling for tools icons.

    This engine provides icons on-demand with proper scaling based on the current
    device pixel ratio, eliminating the need for manual refresh when DPI changes.
    c                 >    t         |           || _        || _        y r   )rg   r   
image_pathr  )r   r  r  r   s      r   r   z_IconEngine.__init__  s    $r   c                     | j                   j                         j                  | j                   j                               j	                         dk  S )N   )r  r  r  backgroundRolevaluer   s    r   _is_dark_modez_IconEngine._is_dark_mode  s<    ||##%++DLL,G,G,IJPPRUXXXr   c                     | j                  |j                         ||      }|j                         s|j                  ||       yy)z/Paint the icon at the requested size and state.N)pixmapr  rZ  
drawPixmap)r   r   r  modestater  s         r   paintz_IconEngine.paint  s8    TYY[$6}}tV, r   c                 L   |j                         dk  s|j                         dk  rt        j                         S | j                  j                  d      }|j                         r$| j                  ||      }|j                         s|S | j                  | j                  |      S )z:Generate a pixmap for the requested size, mode, and state.r   z.svg)
rl  rm  r   QPixmapr  with_suffixexists_create_pixmap_from_svgrZ  _create_pixmap_from_png)r   r  r  r  svg_pathr  s         r   r  z_IconEngine.pixmap  s    ::<1 2==?" ??..v6??11(DAF==?++DOOTBBr   c                 Z    | j                   r| j                   j                         xs dS dS )zGReturn the current device pixel ratio for the toolbar, defaulting to 1.r   )r  r  r   s    r   _devicePixelRatioz_IconEngine._devicePixelRatio  s%    :>,,..05AMAMr   c           
          t        t        dd      }|t        j                         S |j	                         }| j                         r$|j                  dd      }|j                  dd      } |t        j                  |            }|j                         st        j                         S | j                         }t        j                  t        |j                         |z        t        |j                         |z              }t        j                  |      }|j                  |       |j!                  t        j"                  j$                  j&                         t        j(                         }		 |	j+                  |       |j-                  |	t        j.                  dd|j                         |j                                      |	j1                         r|	j3                          |S # |	j1                         r|	j3                          w w xY w)zCCreate a pixmap from SVG with proper scaling and dark mode support.QSvgRendererNs   fill:black;s   fill:white;s   stroke:black;s   stroke:white;r   )r  r   r   r"  
read_bytesr  r  r   
QByteArrayisValidr)  rx  r  rl  rm  setDevicePixelRatiofillr   GlobalColortransparentQPainterbeginrenderQRectFisActiver5   )
r   r'  r  r+  svg_contentrendererdprscaled_sizer  r   s
             r   r%  z#_IconEngine._create_pixmap_from_svg  s   und;==?"))+%--nnMK%--.>@PQK 1 1+ >?!==?"$$&ll3tzz|c'9#:CPS@S<TU{+""3'FII))556.."	MM&!OOGV]]1at{{}%UV! ! "s   3AG* *#Hc                    |j                  |j                  dz         }t        j                         }||fD ]E  }|j	                         st        j                  t        |            }|j                         rC|} n |j                         r|S | j                         }t        j                  t        |j                         |z        t        |j                         |z              }|j                  |t        j                  j                  j                   t        j                  j"                  j$                        }	|	j'                  |       | j)                         r| j*                  j-                         j/                  | j*                  j1                               }
|	j3                  t        j4                  d      t        j                  j6                  j8                        }|	j;                  |
       |	j=                  |       |	S )z
        Create a pixmap from PNG with scaling and dark mode support.

        Prefer to use the *_large.png with the same name; otherwise, use base_path.
        z
_large.pngr  )	with_namestemr   r"  r$  r   rZ  r)  r   rx  r  rl  rm  scaledr   AspectRatioModeKeepAspectRatioTransformationModeSmoothTransformationr/  r  r  r  r  foregroundRolecreateMaskFromColorr   MaskModeMaskOutColorr0  setMask)r   	base_pathr  
large_pathsource_pixmap	candidatecandidate_pixmapr:  r;  scaled_pixmap
icon_colorr  s               r   r&  z#_IconEngine._create_pixmap_from_png  s    ((,)FG
$i0 	I##%$}}S^<#**, 0	 !  $$& ll3tzz|c'9#:CPS@S<TU%,,II%%55II((==

 	))#. --/55dll6Q6Q6STJ 44W%		""//1D z*!!$'r   r   )r   r   r   r   r   r  r   r  r)  r%  r&  r   r   s   @r   r  r    s/    
Y-CN@(r   r  c            	           e Zd 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        j
                  j                  j                        t        t        j
                  j                  j                        z               || _
        i | _        d| _        | j                  D ]  \  }}}}|| j                          t        | |      } t!        j"                  |      t!        j$                  |            } t	        j&                         |      }| j)                  | j+                  |dz         ||      }	|	| j                  |<   |dv r|	j-                  d       ||	j/                  |        | j                  rKt        j0                  d|       | _        | j2                  j5                  t        j
                  j7                  t        t        j
                  j6                  j8                        t        t        j
                  j6                  j:                        z               | j2                  j=                  t        j>                  t         j>                  j@                  jB                  t         j>                  j@                  jD                               | jG                  | j2                        }
|
jI                  d       tK        j                  | |       y)z9coordinates: should we show the coordinates on the right?Nz.png)zoompanT )&r   QToolBarr   setAllowedAreasr   r   ToolBarArear   TopToolBarAreaBottomToolBarAreacoordinates_actions_subplot_dialog	toolitemsaddSeparatorr  	functoolswrapspartialr  	addAction_iconsetCheckable
setToolTipQLabellocLabelsetAlignmentAlignmentFlag
AlignRightAlignVCentersetSizePolicyQSizePolicyPolicy	ExpandingIgnored	addWidget
setVisibler
   )r   r  parentr_  texttooltip_text
image_filecallbackslotalabelActions              r   r   zNavigationToolbar2QT.__init__(  s<   ##D&1VYY22FII))889FII));;<=> 	? '#8< 	/4D,
H|!!#tX.,yt,Y->->t-DE$v{{}T*NN4::j6.A#B#'/*+h'.NN4(+LL.	/( %,,R6DMMM&&vyy'>'>		//::;		//<<=>(? @ MM''	(=(=%%,,66%%,,44)  ..7K""4(##D&1r   c                 p    t        j                  d|      }t        ||       }t        j                  |      S )z
        Construct a `.QIcon` from an image file *name*, including the extension
        and relative to Matplotlib's "images" data directory.

        Uses _IconEngine for automatic DPI scaling.
        images)r   r   r  r   r   )r   namepath_regularengines       r   rh  zNavigationToolbar2QT._iconU  s3     ++Hd; \40{{6""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   r7   r;   z - z<anonymous >z (id: z#x)rS  zSelect Axes:r   F)r  r   get_axesr   QMessageBoxwarningrx  len	get_label	get_titler  filter
get_xlabel
get_ylabelr  r   count	enumerateidQInputDialoggetItemindexfigureoptionsfigure_edit)	r   axesaxtitlesr  duplicate_titlesiitemoks	            r   rU  z$NavigationToolbar2QT.edit_parametersd  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 )NrX  PANrW  ZOOM)r`  
setCheckedr  r  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 r   )rg   rX  r  r	  s     r   rX  zNavigationToolbar2QT.pan  s    T$$&r   c                 >    t        |   |  | j                          y r   )rg   rW  r  r	  s     r   rW  zNavigationToolbar2QT.zoom  s    d$$&r   c                 T    | j                   r| j                  j                  |       y y r   )r_  rl  setTextr   ss     r   set_messagez NavigationToolbar2QT.set_message  s"    MM!!!$ r   c                     | j                   j                  d      d   }||z
  }||z
  }||||z
  ||z
  fD cg c]  }t        |       }}| j                   j                  |       y c c}w )NT)physicalr   )r  r   r  r  )	r   r
  r  r  r  r  rm  valr  s	            r   draw_rubberbandz$NavigationToolbar2QT.draw_rubberband  sp    --t-<Q?b[b[%'R"Wb2g$>?SC??!!$' @s   A(c                 :    | j                   j                  d        y r   )r  r  r   s    r   remove_rubberbandz&NavigationToolbar2QT.remove_rubberband  s    !!$'r   c                      j                   \t         j                  j                   j                  j	                                _          j                  j                  d fd        j                   j                           j                   j                  d        j                   j                           j                   S )Nr  c                 8    j                   j                         S r   )ra  reject)er   s    r   r   z9NavigationToolbar2QT.configure_subplots.<locals>.<lambda>  s    )=)=)D)D)F r   T)	ra  SubplotToolQtr  r   rx  mpl_connectupdate_from_current_subplotparssetModalr  r   s   `r   configure_subplotsz'NavigationToolbar2QT.configure_subplots  s    '#0""DKK$6$6$8$:D KK##FH<<>%%d+!!####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                   j!                         d|||      \  }}|r]|dk7  r0t
        j                  j#                  |      t        j                  d<   	 | j                   j$                  j'                  |       |S |S c c}w # t(        $ r{}t        j*                  j-                  | d	t/        |      t        j*                  j0                  j2                  t        j*                  j0                  j4                         Y d }~|S d }~ww xY w)
Nzsavefig.directory z*.%sz (r  z;;zChoose a filename to save torY  zError saving file)r  get_supported_filetypes_groupedsortedr~  get_default_filetypeospath
expanduserr   r  r  get_default_filenameappendr   QFileDialoggetSaveFileNamerx  dirnamer   savefigr  r  criticalr   StandardButtonOkNoButton)r   r   	filetypessorted_filetypesdefault_filetype	startpathr   filtersselectedFilterr  extsext	exts_listr  fnamer  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vR	{!,F4'!'NN6"	# ))G$!--==KK "@%^%v B46GGOOE4J01C""**51 u+ "@   C%%..-s1v))88;;))88AAC C Cs   F5
%F: :	H>A0H99H>c                 F   | j                   j                  dkD  }| j                   j                  t        | j                         dz
  k  }d| j                  v r| j                  d   j	                  |       d| j                  v r| j                  d   j	                  |       y y )Nr   r   backrj  )
_nav_stack_posr  r`  
setEnabled)r   can_backwardcan_forwards      r   set_history_buttonsz(NavigationToolbar2QT.set_history_buttons  s    ++a/oo**S-AA-EET]]"MM&!,,\:%MM)$//< &r   r  )r   r   r   r
   rb  r)   r  r   rh  rU  r  rX  rW  r  r  r  r  r  r  r   )r  r  r  r   s   000@r   rQ  rQ     s    /$../I'((($(..z:Q>	23+2Z#,<G''%((	$B=O 	)s   A9rQ  c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )r  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bottomr7   r;   zExport valuesSpacingshspacewspacezTight layoutResetCloser   r   r  g{Gzt?F)(rg   r   r   r   r   r   r   r   setObjectName
_spinboxesr   QHBoxLayout	setLayout_export_values_tight_layout_resetr  QVBoxLayout	addLayout	QGroupBoxrv  QFormLayoutQDoubleSpinBoxsetRangesetDecimalssetSingleStepsetKeyboardTrackingvalueChangedr   _on_value_changedaddRow
addStretchQPushButtonsetAutoDefaultclickedr  _figure	_defaults_export_values_dialogr  )r   	targetfigrx  main_layoutgroup	spinboxesrN  layoutboxinnerr  spinboxmethodrF  r   s                 r   r   zSubplotToolQt.__init__  sN    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 r   )r  r~  r  r  subplotparsr  r  )r   r  r  s      r   r  z-SubplotToolQt.update_from_current_subplotpars  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   r  z/SubplotToolQt._export_values.<locals>.<genexpr>  s2      E(4 q 45 Es   #%r      )r   QDialogr  r  r  QPlainTextEditsetReadOnlyrv  setPlainTextr  r  r~  maximumSize	setHeightr   QFontMetricsdocumentdefaultFontr  toPlainTextrm  setMaximumSizer  )r   r
  ry  r  s       r   r  zSubplotToolQt._export_values  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  )r7   r;   gMbP?r   )	r  
setMinimumr  
setMaximumr  subplots_adjustr~  r  rq  )r   r	  r  higherr  r  s         r   r  zSubplotToolQt._on_value_changed  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                 f   | j                   j                          | j                  j                         D ]V  \  }}|j	                  d       |j                  t        | j                   j                  |             |j	                  d       X | j                   j                  j                          y )NTF)
r  tight_layoutr  r~  blockSignalssetValuer  r  r  rq  )r   r  r  s      r   r  zSubplotToolQt._tight_layout%  s    !!#!__224 	(MD'  &WT\\%=%=tDE  '	( 	%%'r   c                     | j                   j                         D ]J  \  }}|j                  dd       |j                  d       |j	                  |       |j                  d       L | j                          y )Nr   r   TF)r  r~  r  r(  r)  r  )r   r  r  s      r   r  zSubplotToolQt._reset-  sj    "nn224 	(NGUQ"  &U#  '		(
 	 r   )
r   r   r   r   r  r  r  r  r  r   r   s   @r   r  r    s"    */X
**((!r   r  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
        j                  j                  j                        t        t
        j                  j                  j                        z               t        j                  d      }|j                  t
        j                  j                  t        t
        j                  j                  j                        t        t
        j                  j                  j                        z               |j!                  t        j"                  t        j"                  j$                  j&                  t        j"                  j$                  j(                               | j+                  |      | _        i | _        i | _        y )NrY  )r   r   r   rZ  r[  r   r   r\  r   r]  r^  rk  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  _message_action
_toolitems_groups)r   toolmanagerrx  message_labels       r   r   zToolbarQt.__init__7  sJ   ""45##D&1VYY22FII))889FII));;<=> 	? "((,""699#:#:FII++667FII++889:$; 	< 	##I$9$9!!((22!!((00%
 	  $~~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 r   )trigger_tool)r  r   s   r   handlerz'ToolbarQt.add_toolitem.<locals>.handlerS  s    d#r   T)r   QToolButtonsetIconrQ  rh  r  rj  ri  toggledr   r  r/  
setdefault_add_to_groupr  )	r   r  r  r-  r{  descriptiontogglerF  r6  s	   ``       r   add_toolitemzToolbarQt.add_toolitemI  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 r   )r0  r   insertSeparatorr.  r  insertWidgetr)   )	r   r  r  rF  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 r   )r/  r9  
disconnectr  r   )r   r  r9  rF  r6  s        r   toggle_toolitemzToolbarQt.toggle_toolitemi  s_    t&#t4 	,OFGNN%%g.g&NN""7+	,r   c                 n    | j                   j                  |g       D ]  \  }}|j                  d         y r   )r/  pop	setParent)r   r  rF  r6  s       r   remove_toolitemzToolbarQt.remove_toolitemq  s4    #224< 	#OFGT"	#r   c                 X    | j                  | j                        j                  |       y r   )widgetForActionr.  r  r  s     r   r  zToolbarQt.set_messageu  s!    T112::1=r   r   )	r   r   r   r   r>  r;  rH  rL  r  r   r   r   r,  r,  6  s     $8,!,#>r   r,  c                   $     e Zd Z fdZd Z xZS )ConfigureSubplotsQtc                 2    t        |   |i | d | _        y r   )rg   r   ra  r   s      r   r   zConfigureSubplotsQt.__init__{  s    $)&)#r   c                 .    t         j                  |        y r   )rQ  r  r   r   s     r   triggerzConfigureSubplotsQt.trigger  s    //5r   )r   r   r   r   rT  r   r   s   @r   rP  rP  y  s    $6r   rP  c                       e Zd Zd Zy)SaveFigureQtc                 J    t         j                  | j                                y r   )rQ  r  "_make_classic_style_pseudo_toolbarrS  s     r   rT  zSaveFigureQt.trigger  s    ((335	7r   Nr   r   r   rT  r   r   r   rV  rV    s    7r   rV  c                       e Zd Zd Zd Zy)RubberbandQtc                 T    t         j                  | j                         d ||||       y r   )rQ  r  rX  )r   r  r  r  r  s        r   r  zRubberbandQt.draw_rubberband  s'    ,,335tRR	Mr   c                 J    t         j                  | j                                y r   )rQ  r  rX  r   s    r   r  zRubberbandQt.remove_rubberband  s    ..335	7r   N)r   r   r   r  r  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_htmlrS  s     r   rT  zHelpQt.trigger  s#    ))$8K8K8MNr   NrY  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 r   )r  grabr   r}   r~   	clipboard	setPixmap)r   r   r   r  s       r   rT  zToolCopyToClipboardQT.trigger  s:    !!#'')335??Gr   NrY  r   r   r   re  re    s    Hr   re  c                   0    e Zd ZeZeZeZej                  Z
y)
_BackendQTN)r   r   r   r   backend_versionr   FigureCanvasr   FigureManagerr  mainloopr   r   r   rk  rk    s    !O!L#M..Hr   rk  )Wrd  r  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   r   +matplotlib.backends.qt_editor.figureoptionsbackends	qt_editorr  rY  r   r   r   r   r   r   r   r   r   r   r  r   Keyr  KeyboardModifierr  MOVEHANDPOINTERSELECT_REGIONWAITRESIZE_HORIZONTALRESIZE_VERTICALCursorShaper*  	lru_cacher   r   r   rp  r   QMainWindowr  r   QIconEnginer  rZ  rQ  r  r  r,  _register_tool_classConfigureSubplotsBaserP  SaveFigureBaserV  RubberbandBaser[  ToolHelpBaser_  ToolCopyToClipboardBasere  _toolbar2_class_toolmanager_toolbar_classexportrk  )r  r  r   rd  s   0000r   <module>r     s    	 
   1 1 )   
 D C O O O'7 '7'7 	''7 	 	'7
 	'7 	!'7 	!'7 	'7 	!'7 	'7 	'7 	'7 	'7 	'7 	'7  	!'7" 	!#'7$ 	%%'7& 	''7* 
S\\X%=	5I+'7, 
s||x7VYG-'7. 	/'70 	&1'72 	3'74 	5'76 	7'78 	9'7: 	;'7< 	='7> 	?'7@ 	A'7B 	C'7D 	E'7F 	G'7H 	I'7J 	!K'7L 	!M'7).2aGGFIIMM1%&))`	 	S WVYY//56WVYY]]C()+	 
'	+,	-(			.	|$		"	"O4		 	 /26
-1QAwvyy$$a((
 Q6 6r"=Ji :W%y'8'8 Wt
"&& "q*' q*ho%## odq=-y/A/A q=h_!I%% _!D@>!9#5#5 @>F $##N36-== 6 46 $##N37=// 7 47 $##N37=// 7 47 $##N3O]'' O 4O
 $##N3HMAA H 4H #7 -6 * 
/ / /c$)Z	
s   !.N%AN+(N1