o
    ‘iÊ™  ã                	   @   s0  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  m  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& dd	„ g d
‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘dej'dkršdnd f‘d!ej'dkr¥d"ndf‘d#‘d$‘d%‘d&‘d'‘d(‘d)‘d*‘d+‘d,‘d-‘d.‘d/‘d0‘d1‘d2‘R D ƒZ(d3d4„ d5D ƒZ)d6d	„ ej*d7fej+d8fej,d9fej-d:fej.d;fej/d<fej0d=ffD ƒZ1e  2d¡d>d?„ ƒZ3G d@dA„ dAeƒZ4G dBdC„ dCee!j5ƒZ6G dDdE„ dEe!j7ƒZ8G dFdG„ dGeƒZ9G dHdI„ dIee!j:ƒZ;G dJdK„ dKe!j<ƒZ=G dLdM„ dMee!j:ƒZ>e ?e6¡G dNdO„ dOej@ƒƒZAe ?e6¡G dPdQ„ dQejBƒƒZCe ?e6¡G dRdS„ dSejDƒƒZEe ?e6¡G dTdU„ dUejFƒƒZGe ?e6¡G dVdW„ dWejHƒƒZIe;e9_Je>e9_KejLG dXdY„ dYeƒƒZMdS )Zé    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Ú_to_intÚ
_isdeletedÚ_maybe_allow_interruptc                 C   s$   i | ]\}}t ttjj|ƒƒ|“qS © )r   Úgetattrr   ÚQtÚKey©Ú.0ÚkÚvr   r   úm/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/backends/backend_qt.pyÚ
<dictcomp>   s    ÿr&   )Z
Key_EscapeÚescape)ZKey_TabÚtab)ZKey_BackspaceZ	backspace)Z
Key_ReturnÚenter)Z	Key_Enterr)   )Z
Key_InsertÚinsert)Z
Key_DeleteÚdelete)Z	Key_PauseÚpause)Z
Key_SysReqZsysreq)Z	Key_ClearÚclear)ZKey_HomeÚhome)ZKey_EndÚend)ZKey_LeftÚleft)ZKey_UpÚup)Z	Key_RightÚright)ZKey_DownZdown)Z
Key_PageUpZpageup)ZKey_PageDownZpagedown)Ú	Key_ShiftÚshiftÚKey_ControlÚdarwinÚcontrolÚcmdÚKey_MetaÚmeta)ÚKey_AltZalt)ZKey_CapsLockZ	caps_lock)ZKey_F1Úf1)ZKey_F2Úf2)ZKey_F3Zf3)ZKey_F4Zf4)ZKey_F5Zf5)ZKey_F6Zf6)ZKey_F7Zf7)ZKey_F8Zf8)ZKey_F9Zf9)ÚKey_F10Zf10)r>   Zf11)ZKey_F12Zf12)ZKey_Super_LÚsuper)ZKey_Super_Rr?   c                 C   s4   g | ]\}}t ttjj|ƒƒt ttjj|ƒƒf‘qS r   )r   r   r   r   ZKeyboardModifierr    )r"   ÚmodÚkeyr   r   r%   Ú
<listcomp>D   s    þÿÿrB   ))ZControlModifierr5   )ZAltModifierr;   )ZShiftModifierr3   )ZMetaModifierr9   c                 C   s    i | ]\}}|t tjj|ƒ“qS r   )r   r   r   ZCursorShaper!   r   r   r%   r&   N   ó    ÿZSizeAllCursorZPointingHandCursorZArrowCursorZCrossCursorZ
WaitCursorZSizeHorCursorZSizeVerCursorc                  C   s‚  t j ¡ } | d u r¿tj ¡ stdƒ‚tdv rd}d}ntdv r$d}d}ntdƒ‚|D ]7}tj	 
|› d	¡}|d ura|j ¡ d uratj	 
|› d
¡}t dt› dt ¡ › d|› d| ¡ › d	¡  nq*|dkrzz
t j tjj¡ W n	 tyy   Y nw zt j tjjj¡ W n	 tyŽ   Y nw t  dg¡} tjdkr«tt d¡ƒ}t |¡}|  |¡ |  d¡ t ¡  |dkr¿|  tjj¡ | S )NzInvalid DISPLAY variable>   ÚPySide6ÚPyQt6)ÚPyQt5ÚPySide2é   >   rF   rG   )rE   rD   é   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.Ú
matplotlibr6   úimages/matplotlib.svgT) r   ÚQApplicationÚinstanceÚmplZ_c_internal_utilsZdisplay_is_validÚRuntimeErrorr   ÚsysÚmodulesÚgetr   Zwarn_externalr   ZqVersionÚsetAttributer   ZAA_EnableHighDpiScalingÚAttributeErrorZ#setHighDpiScaleFactorRoundingPolicyZ HighDpiScaleFactorRoundingPolicyZPassThroughÚplatformÚstrr   Ú_get_data_pathr   ÚQIconÚsetWindowIconZsetQuitOnLastWindowClosedZ_setup_new_guiappZAA_UseHighDpiPixmaps)ZappZother_bindingsZ
qt_versionZbindingr@   Z
other_coreÚimageÚiconr   r   r%   Ú_create_qApp]   sb   

ÿþýÿ€ÿÿÿ



r\   c                       sH   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	‡  Z
S )ÚTimerQTz-Subclass of `.TimerBase` using QTimer events.c                    s0   t  ¡ | _| jj | j¡ tƒ j|i |¤Ž d S ©N)r   ÚQTimerÚ_timerÚtimeoutÚconnectZ	_on_timerr?   Ú__init__©ÚselfÚargsÚkwargs©Ú	__class__r   r%   rc   š   s   
zTimerQT.__init__c                 C   s   t | jƒs|  ¡  d S d S r^   )r   r`   Ú_timer_stop©re   r   r   r%   Ú__del__¡   s   
ÿzTimerQT.__del__c                 C   ó   | j  | j¡ d S r^   )r`   ZsetSingleShotZ_singlerk   r   r   r%   Ú_timer_set_single_shot§   ó   zTimerQT._timer_set_single_shotc                 C   rm   r^   )r`   ZsetIntervalZ	_intervalrk   r   r   r%   Ú_timer_set_intervalª   ro   zTimerQT._timer_set_intervalc                 C   ó   | j  ¡  d S r^   )r`   Ústartrk   r   r   r%   Ú_timer_start­   ó   zTimerQT._timer_startc                 C   rq   r^   )r`   Ústoprk   r   r   r%   rj   °   rt   zTimerQT._timer_stop)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rc   rl   rn   rp   rs   rj   Ú__classcell__r   r   rh   r%   r]   —   s    r]   c                       sZ  e Zd ZdZeZe dd„ ¡Zdd„ de	j
fde	jfde	jfd	e	jfd
e	jffD ƒZdF‡ fdd„	Zdd„ Zdd„ Zdd„ Zdd„ ZdFdd„Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Z d.d/„ Z!e"dFdd0œd1d2„ƒZ#d3d4„ Z$d5d6„ Z%dGd8d9„Z&dFd:d;„Z'‡ fd<d=„Z(d>d?„ Z)dFd@dA„Z*dBdC„ Z+dDdE„ Z,‡  Z-S )HÚFigureCanvasQTZqtc                 C   s   t S r^   )ÚFigureManagerQT)Úclsr   r   r%   Ú<lambda>·   ó    zFigureCanvasQT.<lambda>c                 C   s    i | ]\}}t tjj|ƒ|“qS r   )r   r   r   r   r!   r   r   r%   r&   ¹   rC   zFigureCanvasQT.<dictcomp>Z
LeftButtonZRightButtonZMiddleButtonZXButton1ZXButton2Nc                    sv   t ƒ  tƒ j|d d| _d| _dd„ | _d| _|  tj	j
j¡ |  d¡ | j|  ¡ Ž  t t d¡¡}|  |¡ d S )N)ÚfigureFc                 S   ó   d S r^   r   ©Úpainterr   r   r%   r~   É   r   z)FigureCanvasQT.__init__.<locals>.<lambda>TÚwhite)r\   r?   rc   Ú_draw_pendingÚ_is_drawingÚ_draw_rect_callbackÚ_in_resize_eventrS   r   r   ZWidgetAttributeZWA_OpaquePaintEventZsetMouseTrackingÚresizeÚget_width_heightr   ZQPaletteÚQColorZ
setPalette)re   r€   Úpaletterh   r   r%   rc   Ã   s   

zFigureCanvasQT.__init__c                 C   s8   |   |  ¡ pd¡rt |  ¡ |  ¡ ¡}|  |¡ d S d S )Nr   )Z_set_device_pixel_ratioÚdevicePixelRatioFr   ZQResizeEventÚsizeÚresizeEvent©re   Úeventr   r   r%   Ú_update_pixel_ratioÓ   s   
ÿúz"FigureCanvasQT._update_pixel_ratioc                 C   s4   |   ¡  |d ur|j | j ¡ |j | j ¡ d S d S r^   )r’   ZphysicalDotsPerInchChangedrb   ZlogicalDotsPerInchChanged)re   Úscreenr   r   r%   Ú_update_screenÜ   s
   þzFigureCanvasQT._update_screenc                 C   s,   |   ¡  ¡ }|j | j¡ |  | ¡ ¡ d S r^   )ÚwindowZwindowHandleZscreenChangedrb   r”   r“   )re   r‘   r•   r   r   r%   Ú	showEventã   s   zFigureCanvasQT.showEventc                 C   s   |   tjt|d¡ d S )N)Úcursor)Z	setCursorr   Zcheck_getitemÚcursord)re   r—   r   r   r%   Ú
set_cursorê   s   zFigureCanvasQT.set_cursorc                 C   st   |du r|   tj ¡ ¡}nt|dƒr| ¡ }n	t|dƒr | ¡ }| ¡ }| jjj	| j
 | ¡  }|| j
 || j
 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.
        NÚpositionÚpos)ZmapFromGlobalr   ZQCursorr›   Úhasattrrš   Úxr€   ÚbboxÚheightÚdevice_pixel_ratioÚy)re   r›   r   r¡   r   r   r%   ÚmouseEventCoordsî   s   



zFigureCanvasQT.mouseEventCoordsc                 C   s<   t j ¡  ¡ }td| g|  |¡¢R |  |¡|dœŽ ¡  d S )NZfigure_enter_event©Ú	modifiersÚguiEvent)r   rL   rM   ZqueryKeyboardModifiersr   r¢   Ú_mpl_modifiersÚ_process)re   r‘   Úmodsr   r   r%   Ú
enterEvent  s   ÿý
zFigureCanvasQT.enterEventc                 C   s4   t j ¡  td| g|  ¡ ¢R |  ¡ |dœŽ ¡  d S )NZfigure_leave_eventr£   )r   rL   ZrestoreOverrideCursorr   r¢   r¦   r§   r   r   r   r%   Ú
leaveEvent  s   
ÿý
zFigureCanvasQT.leaveEventc                 C   óL   | j  | ¡ ¡}|d ur$td| g|  |¡¢|‘R |  ¡ |dœŽ ¡  d S d S )NÚbutton_press_eventr£   ©ÚbuttondrR   Úbuttonr   r¢   r¦   r§   ©re   r‘   r¯   r   r   r%   ÚmousePressEvent  ó   ÿÿý
üzFigureCanvasQT.mousePressEventc                 C   sN   | j  | ¡ ¡}|d ur%td| g|  |¡¢|‘R d|  ¡ |dœŽ ¡  d S d S )Nr¬   T)Zdblclickr¤   r¥   r­   r°   r   r   r%   ÚmouseDoubleClickEvent  s   ÿÿý
üz$FigureCanvasQT.mouseDoubleClickEventc                 C   s,   t d| g|  |¡¢R |  ¡ |dœŽ ¡  d S )NZmotion_notify_eventr£   )r   r¢   r¦   r§   r   r   r   r%   ÚmouseMoveEvent$  s   ÿý
zFigureCanvasQT.mouseMoveEventc                 C   r«   )NZbutton_release_eventr£   r­   r°   r   r   r%   ÚmouseReleaseEvent*  r²   z FigureCanvasQT.mouseReleaseEventc                 C   sr   |  ¡  ¡ stj ¡  ¡ dkr| ¡  ¡ d }n|  ¡  ¡ }|r7td| g|  	|¡¢R ||  
¡ |dœŽ ¡  d S d S )NZxcbéx   Zscroll_event)Ústepr¤   r¥   )Z
pixelDeltaZisNullr   rL   rM   ZplatformNameZ
angleDeltar¡   r   r¢   r¦   r§   )re   r‘   Zstepsr   r   r%   Ú
wheelEvent2  s   ÿý
üzFigureCanvasQT.wheelEventc                 C   ó<   |   |¡}|d urtd| |g|  ¡ ¢R d|iŽ ¡  d S d S )NZkey_press_eventr¥   ©Ú_get_keyr   r¢   r§   ©re   r‘   rA   r   r   r%   ÚkeyPressEvent@  ó   
ÿÿþ
ýzFigureCanvasQT.keyPressEventc                 C   r¹   )NZkey_release_eventr¥   rº   r¼   r   r   r%   ÚkeyReleaseEventG  r¾   zFigureCanvasQT.keyReleaseEventc                 C   s˜   | j rd S d| _ z?| ¡  ¡ | j }| ¡  ¡ | j }| jj}|| }|| }| jj||dd tj	 
| |¡ td| ƒ ¡  |  ¡  W d| _ d S d| _ w )NTF)ÚforwardZresize_event)rˆ   rŽ   Úwidthr    rŸ   r€   ZdpiZset_size_inchesr   ÚQWidgetr   r   r§   Ú	draw_idle)re   r‘   ÚwÚhZdpivalZwinchZhinchr   r   r%   r   N  s   
zFigureCanvasQT.resizeEventc                 C   s   |   ¡ \}}t ||¡S r^   )rŠ   r   ÚQSize)re   rÄ   rÅ   r   r   r%   ÚsizeHinta  ó   zFigureCanvasQT.sizeHintc                 C   s   t  dd¡S )Né
   )r   rÆ   rk   r   r   r%   ÚminumumSizeHinte  s   zFigureCanvasQT.minumumSizeHint©Úexcludec                   s2   ˆd u rt j ¡  ¡ ‰tˆƒ‰‡ ‡fdd„tD ƒS )Nc                    s0   g | ]\}}ˆ |krˆ|@ rt |  d d¡‘qS )r7   Zctrl)ÚSPECIAL_KEYSÚreplace)r"   ÚmaskrA   ©rÌ   r¤   r   r%   rB   r  s
    þz1FigureCanvasQT._mpl_modifiers.<locals>.<listcomp>)r   rL   rM   ZkeyboardModifiersr   Ú_MODIFIER_KEYS)r¤   rÌ   r   rÐ   r%   r¦   h  s   ÿzFigureCanvasQT._mpl_modifiersc                 C   sx   |  ¡ }| j|d}zt| }W n# ty3   |tjkrY d S t|ƒ}d|v r-| d¡ n| ¡ }Y nw d 	||g ¡S )NrË   r4   ú+)
rA   r¦   rÍ   ÚKeyErrorrP   Ú
maxunicodeÚchrÚremoveÚlowerÚjoin)re   r‘   Z	event_keyr¨   rA   r   r   r%   r»   v  s   
€ñzFigureCanvasQT._get_keyc                 C   s   t j ¡  ¡  d S r^   )r   rL   rM   ZprocessEventsrk   r   r   r%   Úflush_events  s   zFigureCanvasQT.flush_eventsr   c                 C   s‚   t | dƒr| j ¡ rtdƒ‚t ¡  | _}|dkr%tj t|d ƒ|j	¡}t
|ƒ t |¡ W d   ƒ d S 1 s:w   Y  d S )NÚ_event_loopzEvent loop already runningr   iè  )rœ   rÚ   Z	isRunningrO   r   Z
QEventLoopr_   Ú
singleShotÚintÚquitr   r   Ú_exec)re   ra   Z
event_loopÚ_r   r   r%   Ústart_event_loop”  s   
"ÿzFigureCanvasQT.start_event_loopc                 C   s   t | dƒr| j ¡  d S d S )NrÚ   )rœ   rÚ   rÝ   r   r   r   r%   Ústop_event_loopŸ  s   
ÿzFigureCanvasQT.stop_event_loopc                    sN   | j rdS tj| dd tƒ  ¡  W d  ƒ n1 sw   Y  |  ¡  dS )z5Render the figure, and queue a request for a Qt draw.NT)r†   )r†   r   Z_setattr_cmr?   ÚdrawÚupdaterk   rh   r   r%   râ   ¤  s   ÿzFigureCanvasQT.drawc                 C   s:   t | ddƒst | ddƒsd| _tj d| j¡ dS dS dS )z9Queue redraw of the Agg buffer and request Qt paintEvent.r…   Fr†   Tr   N)r   r…   r   r_   rÛ   Ú
_draw_idlerk   r   r   r%   rÃ   ®  s   
ÿýzFigureCanvasQT.draw_idlec                    sZ   |d u rˆ j rˆ j j}‡ fdd„|jD ƒ\}}}}|| }ˆ  |ˆ  ¡  ¡ | ||¡ d S )Nc                    ó   g | ]	}t |ˆ j ƒ‘qS r   ©rÜ   r    ©r"   Úptrk   r   r%   rB   ¿  ó    z'FigureCanvasQT.blit.<locals>.<listcomp>)r€   rž   ZboundsZrepaintÚrectrŸ   )re   rž   ÚlÚbrÄ   rÅ   Útr   rk   r%   Úblitº  s
    zFigureCanvasQT.blitc              	   C   s®   |   ¡ I | js	 W d   ƒ d S d| _|  ¡ dk s |  ¡ dk r)	 W d   ƒ d S z|  ¡  W n ty<   t ¡  Y n	w W d   ƒ d S W d   ƒ d S 1 sPw   Y  d S )NFr   )Z_idle_draw_cntxr…   rŸ   rÁ   râ   Ú	ExceptionÚ	tracebackÚ	print_excrk   r   r   r%   rä   Ã  s"   
þûþÿù
"özFigureCanvasQT._draw_idlec                    sb   |d ur$‡ fdd„|D ƒ\‰‰}}ˆ| ‰ˆ| ‰‡ ‡‡‡‡fdd„}ndd„ }|ˆ _ ˆ  ¡  d S )Nc                    rå   r   ræ   rç   rk   r   r%   rB   Ô  ré   z0FigureCanvasQT.drawRectangle.<locals>.<listcomp>c                    s®   t  t  d¡dˆ j ¡}| ddg¡ t  d¡dft  d¡dffD ]3\}}| |¡ | |¡ |  |¡ |  ˆˆˆˆ¡ |  ˆˆˆˆ¡ |  ˆˆˆˆ¡ |  ˆˆˆˆ¡ q!d S )NÚblackr   é   r   r„   )	r   ZQPenr‹   r    ZsetDashPatternZsetDashOffsetZsetColorZsetPenZdrawLine)rƒ   ÚpenÚcolorÚoffset©re   Úx0Úx1Úy0Úy1r   r%   r‡   ×  s    þþ


ôz9FigureCanvasQT.drawRectangle.<locals>._draw_rect_callbackc                 S   r   r^   r   r‚   r   r   r%   r‡   ì  s   )r‡   rã   )re   rê   rÄ   rÅ   r‡   r   r÷   r%   ÚdrawRectangleÐ  s   zFigureCanvasQT.drawRectangler^   )r   ).rv   rw   rx   Zrequired_interactive_frameworkr]   Z
_timer_clsr   ZclasspropertyZmanager_classr   ÚLEFTÚRIGHTZMIDDLEZBACKZFORWARDr®   rc   r’   r”   r–   r™   r¢   r©   rª   r±   r³   r´   rµ   r¸   r½   r¿   r   rÇ   rÊ   Ústaticmethodr¦   r»   rÙ   rà   rá   râ   rÃ   rî   rä   rü   rz   r   r   rh   r%   r{   ´   sR    ûÿ
	
	



	r{   c                       s$   e Zd Ze ¡ Z‡ fdd„Z‡  ZS )Ú
MainWindowc                    s   | j  ¡  tƒ  |¡ d S r^   )ÚclosingÚemitr?   Ú
closeEventr   rh   r   r%   r  õ  s   
zMainWindow.closeEvent)rv   rw   rx   r   ÚSignalr  r  rz   r   r   rh   r%   r   ò  s    r   c                       sd   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zed
d„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Z‡  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           	         s  t ƒ | _tƒ  ||¡ | jj | j¡ tjdkr*t	t
 d¡ƒ}t |¡}| j |¡ d| j_| jr@| j | j¡ | j ¡  ¡ }nd}| ¡ }| ¡ }|| }| j | ¡ |¡ | j | j¡ t ¡ rl| j ¡  | j ¡  | j tjjj ¡ | j !¡  | j "¡  d S )Nr6   rK   Fr   )#r   r•   r?   rc   r  rb   Ú_widgetclosedrP   rU   rV   r   rW   r   rX   rY   Ú_destroyingÚtoolbarZ
addToolBarrÇ   rŸ   r‰   rÁ   ZsetCentralWidgetÚcanvasrN   Úis_interactiveÚshowrÃ   ZsetFocusPolicyr   r   ZFocusPolicyZStrongFocusÚsetFocusÚraise_)	re   r  ÚnumrZ   r[   Z
tbs_heightÚcsZ	cs_heightrŸ   rh   r   r%   rc     s.   




zFigureManagerQT.__init__c                 C   s&   | j  ¡ r| j  ¡  d S | j  ¡  d S r^   )r•   ZisFullScreenZ
showNormalZshowFullScreenrk   r   r   r%   Úfull_screen_toggle0  s   
z"FigureManagerQT.full_screen_togglec                 C   sJ   t d| jƒ ¡  | jjrd S d| j_zt | ¡ W d S  ty$   Y d S w )NÚclose_eventT)r   r  r§   r•   r  r   ÚdestroyrT   rk   r   r   r%   r  6  s   ÿzFigureManagerQT._widgetclosedc                 C   sp   t || jj ƒ}t || jj ƒ}| j ¡ | j ¡  }| j ¡ | j ¡  }| j ||¡ | j || || ¡ d S r^   )rÜ   r  r    r•   rÁ   rŸ   r‰   )re   rÁ   rŸ   Úextra_widthZextra_heightr   r   r%   r‰   C  s   zFigureManagerQT.resizec                 C   sJ   t j ¡ }|r#t|ƒ t |¡ W d   ƒ d S 1 sw   Y  d S d S r^   )r   rL   rM   r   r   rÞ   )r}   Zqappr   r   r%   Ústart_main_loopM  s   

"ÿÿzFigureManagerQT.start_main_loopc                 C   s0   | j  ¡  tjd r| j  ¡  | j  ¡  d S d S )Nzfigure.raise_window)r•   r
  rN   ÚrcParamsZactivateWindowr  rk   r   r   r%   r
  T  s
   


þzFigureManagerQT.showc                 G   sD   t j ¡ d u r	d S | jjrd S d| j_| jr| j ¡  | j ¡  d S ©NT)r   rL   rM   r•   r  r  r  Úclose©re   rf   r   r   r%   r  Z  s   
zFigureManagerQT.destroyc                 C   s
   | j  ¡ S r^   )r•   ZwindowTitlerk   r   r   r%   Úget_window_titlee  s   
z FigureManagerQT.get_window_titlec                 C   s   | j  |¡ d S r^   )r•   ZsetWindowTitle)re   Útitler   r   r%   Úset_window_titleh  ó   z FigureManagerQT.set_window_title)rv   rw   rx   ry   rc   r  r  r‰   Úclassmethodr  r
  r  r  r  rz   r   r   rh   r%   r|   ú  s    (

r|   c                       s¸   e Zd Ze e¡Ze d¡Z	g e
j¢Ze dd„ eD ƒ d¡d d¡ d!d	d
„Zdd„ Zdd„ Zdd„ Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Z‡  ZS )"ÚNavigationToolbar2QTz3.8c                 C   s   g | ]^}}|‘qS r   r   )r"   Únamerß   r   r   r%   rB   s  ó    zNavigationToolbar2QT.<listcomp>ZSubplotsr   )Ú	Customizez%Edit axis, curve and image parametersZqt4_editor_optionsÚedit_parametersNTc           
      C   sB  t j | |¡ |  tj ttjjjƒttjjj	ƒB ¡¡ || _
i | _d| _| jD ]5\}}}}|du r7|  ¡  q(|  |  |d ¡|t| |ƒ¡}|| j|< |dv rT| d¡ |dur]| |¡ q(| j
r™t  d| ¡| _| j tj ttjjjƒttjjjƒB ¡¡ | j t  t jjjt jjj¡¡ |  | j¡}	|	  d¡ t! | |¡ dS )z9coordinates: should we show the coordinates on the right?Nú.png)ÚzoomÚpanTÚ )"r   ÚQToolBarrc   ÚsetAllowedAreasr   r   ÚToolBarArear   ÚTopToolBarAreaÚBottomToolBarAreaÚcoordinatesÚ_actionsÚ_subplot_dialogÚ	toolitemsZaddSeparatorZ	addActionÚ_iconr   ÚsetCheckableÚ
setToolTipÚQLabelÚlocLabelÚsetAlignmentÚAlignmentFlagÚ
AlignRightÚAlignVCenterÚsetSizePolicyÚQSizePolicyÚPolicyÚ	ExpandingÚIgnoredÚ	addWidgetZ
setVisibler	   )
re   r  Úparentr+  ÚtextZtooltip_textÚ
image_fileÚcallbackÚaZlabelActionr   r   r%   rc   w  sF   
ÿÿ

ÿ


€ÿÿ
þ
zNavigationToolbar2QT.__init__c                 C   s²   t  d|¡}| |j dd¡¡}t| ¡ r|n|ƒ}t |¡}| 	|  
¡ p&d¡ |  ¡  |  ¡ ¡ ¡ dk rT|  ¡  |  ¡ ¡}| t d¡tjjj¡}| |¡ | |¡ t |¡S )z—
        Construct a `.QIcon` from an image file *name*, including the extension
        and relative to Matplotlib's "images" data directory.
        Zimagesr"  z
_large.pngr   é€   rò   )r   rW   Ú	with_namer  rÎ   rV   Úexistsr   ZQPixmapZsetDevicePixelRatior   rŒ   rõ   ZbackgroundRoleÚvalueZforegroundRoleZcreateMaskFromColorr‹   r   r   ZMaskModeZMaskOutColorÚfillZsetMaskrX   )re   r  Zpath_regularZ
path_largeÚfilenameÚpmZ
icon_colorrÏ   r   r   r%   r/  Ÿ  s$   ÿ

ÿþ


zNavigationToolbar2QT._iconc                    sà   | j j ¡ }|stj | j  ¡ dd¡ d S t|ƒdkr|\}nIdd„ |D ƒ‰ ‡ fdd„ˆ D ƒ}t|ƒD ]\}}ˆ | |v rLˆ |  dt	|ƒd›d	7  < q3tj
 | j  ¡ d
dˆ dd¡\}}|sad S |ˆ  |¡ }t || ¡ d S )NÚErrorzThere are no axes to edit.r   c              	   S   s^   g | ]+}|  ¡ p,| ¡ p,| d ¡p,| d¡p,d td| ¡ | ¡ gƒ¡p,dt|ƒj› d‘qS )r0   r2   z - Nz<anonymous ú>)Z	get_labelZ	get_titlerØ   ÚfilterZ
get_xlabelZ
get_ylabelÚtyperv   )r"   Úaxr   r   r%   rB   À  s    úÿþýüúz8NavigationToolbar2QT.edit_parameters.<locals>.<listcomp>c                    s   g | ]}ˆ   |¡d kr|‘qS )r   )Úcount)r"   r  ©Útitlesr   r%   rB   È  s    z (id: z#xú)r   zSelect axes:r   F)r  r€   Zget_axesr   ÚQMessageBoxÚwarningr>  ÚlenÚ	enumerateÚidZQInputDialogZgetItemÚindexÚfigureoptionsZfigure_edit)re   ZaxesrN  Zduplicate_titlesÚiÚitemÚokr   rP  r%   r!  ·  s4   ÿù
ÿ€
þz$NavigationToolbar2QT.edit_parametersc                 C   sL   d| j v r| j d  | jjdk¡ d| j v r$| j d  | jjdk¡ d S d S )Nr$  ZPANr#  ZZOOM)r,  Ú
setCheckedÚmoder  rk   r   r   r%   Ú_update_buttons_checkedÕ  s
   

ÿz,NavigationToolbar2QT._update_buttons_checkedc                    ó   t ƒ j|Ž  |  ¡  d S r^   )r?   r$  r_  r  rh   r   r%   r$  Ü  rÈ   zNavigationToolbar2QT.panc                    r`  r^   )r?   r#  r_  r  rh   r   r%   r#  à  rÈ   zNavigationToolbar2QT.zoomc                 C   s&   | j  |¡ | jr| j |¡ d S d S r^   )Ú_messager  r+  r3  ÚsetText©re   Úsr   r   r%   Úset_messageä  s   ÿz NavigationToolbar2QT.set_messagec                 C   sJ   | j jjj}|| }|| }dd„ |||| || fD ƒ}| j  |¡ d S )Nc                 S   s   g | ]}t |ƒ‘qS r   )rÜ   )r"   Úvalr   r   r%   rB   í  r  z8NavigationToolbar2QT.draw_rubberband.<locals>.<listcomp>)r  r€   rž   rŸ   rü   )re   r‘   rø   rú   rù   rû   rŸ   rê   r   r   r%   Údraw_rubberbandé  s
   z$NavigationToolbar2QT.draw_rubberbandc                 C   s   | j  d ¡ d S r^   )r  rü   rk   r   r   r%   Úremove_rubberbandð  r  z&NavigationToolbar2QT.remove_rubberbandc                    sP   ˆ j d u rtˆ jjˆ j ¡ ƒˆ _ ˆ j d‡ fdd„¡ ˆ j  ¡  ˆ j  ¡  ˆ j S )Nr  c                    s
   ˆ j  ¡ S r^   )r-  Zreject)Úerk   r   r%   r~   ø  s   
 z9NavigationToolbar2QT.configure_subplots.<locals>.<lambda>)r-  ÚSubplotToolQtr  r€   r>  Zmpl_connectÚupdate_from_current_subplotparsr
  rk   r   rk   r%   Úconfigure_subplotsó  s   
ÿÿ

z'NavigationToolbar2QT.configure_subplotsc              
   G   s@  | j  ¡ }t| ¡ ƒ}| j  ¡ }tj tj	d ¡}tj 
|| j  ¡ ¡}g }d }|D ]!\}	}
d 
dd„ |
D ƒ¡}|	› d|› d}||
v rE|}| |¡ q)d 
|¡}tj | j  ¡ d|||¡\}}|rž|d	krntj |¡tj	d< z
| j j |¡ W d S  ty } ztj | d
t|ƒtjjjtjjj¡ W Y d }~d S d }~ww d S )Nzsavefig.directoryú c                 S   s   g | ]}d | ‘qS )z*.%sr   )r"   Úextr   r   r%   rB     r  z4NavigationToolbar2QT.save_figure.<locals>.<listcomp>z (rR  z;;zChoose a filename to save tor%  zError saving file)r  Zget_supported_filetypes_groupedÚsortedÚitemsZget_default_filetypeÚosÚpathÚ
expanduserrN   r  rØ   Zget_default_filenameÚappendr   ZQFileDialogZgetSaveFileNamer>  Údirnamer€   Zsavefigrï   rS  ÚcriticalrV   ZStandardButtonZOkZNoButton)re   rf   Ú	filetypesZsorted_filetypesZdefault_filetypeZ	startpathrr   ÚfiltersZselectedFilterr  ÚextsZ	exts_listrL  Úfnameri  r   r   r%   Úsave_figureý  s@   


þ
ý€ÿúz NavigationToolbar2QT.save_figurec                 C   s^   | j jdk}| j jt| j ƒd k }d| jv r| jd  |¡ d| jv r-| jd  |¡ d S d S )Nr   r   ÚbackrÀ   )Z
_nav_stackÚ_posrU  r,  Z
setEnabled)re   Zcan_backwardZcan_forwardr   r   r%   Úset_history_buttons  s   

ÿz(NavigationToolbar2QT.set_history_buttonsr  )rv   rw   rx   r   r  rV   ra  r   Zdeprecate_privatize_attributeÚmessager	   r.  r*   rX  rc   r/  r!  r_  r$  r#  re  rg  rh  rl  r{  r~  rz   r   r   rh   r%   r  l  s(    


ý
(
 r  c                       sD   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z‡  Z	S )rj  c                    sŽ  t ƒ  ¡  |  t tt d¡ƒ¡¡ |  d¡ i | _	t
 ¡ }|  |¡ 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 ]v\}}}t
 ¡ }| |¡ t
 |¡}| |¡ t
 |¡}	|D ]-}
t
 ¡  | j	|
< }| dd¡ | d¡ | d¡ | d¡ |j | j¡ |	 |
|¡ q`| d¡ |D ]!\}
}t
  |
¡}| !d¡ |j" |¡ | |¡ |
dkr¶| #¡  q•qA|| _$i | _%d | _&|  '¡  d S )Nzimages/matplotlib.pngZSubplotToolZBorders)ÚtopÚbottomr0   r2   zExport valuesZSpacingsZhspaceZwspacezTight layoutZResetÚCloser   r   ró   g{®Gázt?F)(r?   rc   rY   r   rX   rV   r   rW   ZsetObjectNameÚ
_spinboxesr   ZQHBoxLayoutÚ	setLayoutÚ_export_valuesÚ_tight_layoutÚ_resetr  ÚQVBoxLayoutZ	addLayoutZ	QGroupBoxr=  ZQFormLayoutZQDoubleSpinBoxÚsetRangeZsetDecimalsZsetSingleStepZsetKeyboardTrackingZvalueChangedrb   Ú_on_value_changedZaddRowZ
addStretchZQPushButtonZsetAutoDefaultÚclickedr  Ú_figureÚ	_defaultsÚ_export_values_dialogrk  )re   Z	targetfigr>  Zmain_layoutÚgroupÚ	spinboxesZbuttonsÚlayoutÚboxÚinnerr  ÚspinboxÚmethodr¯   rh   r   r%   rc   '  s^   
ÿ


þþþü	










€ùzSubplotToolQt.__init__c                    s&   ‡ fdd„ˆ j  ¡ D ƒˆ _ˆ  ¡  d S )Nc                    s    i | ]\}}|t ˆ jj|ƒ“qS r   )r   rŒ  Úsubplotpars)r"   r  r”  rk   r   r%   r&   T  s    ÿzASubplotToolQt.update_from_current_subplotpars.<locals>.<dictcomp>)rƒ  rp  r  r‡  rk   r   rk   r%   rk  S  s   
ÿz-SubplotToolQt.update_from_current_subplotparsc                 C   s¦   t  ¡ | _t  ¡ }| j |¡ t  ¡ }| d¡ | |¡ | d 	dd„ | j
 ¡ D ƒ¡¡ | ¡ }| t | ¡  ¡ ¡ d| ¡ ¡ ¡ d ¡ | |¡ | j ¡  d S )NTz,
c                 s   s(    | ]\}}|› d |  ¡ d›V  qdS )ú=z.3N©rF  ©r"   Úattrr”  r   r   r%   Ú	<genexpr>b  s   € ÿz/SubplotToolQt._export_values.<locals>.<genexpr>r   é   )r   ÚQDialogrŽ  rˆ  r„  ZQPlainTextEditZsetReadOnlyr=  ZsetPlainTextrØ   rƒ  rp  ZmaximumSizeZ	setHeightr   ZQFontMetricsZdocumentZdefaultFontrŽ   ZtoPlainTextrŸ   ZsetMaximumSizer
  )re   r‘  r?  rŽ   r   r   r%   r…  X  s&   



ÿÿÿÿ
zSubplotToolQt._export_valuesc                 C   sx   | j }dD ]\}}||  ||  ¡ d ¡ ||  ||  ¡ d ¡ q| jjdi dd„ | ¡ D ƒ¤Ž | jj ¡  d S )N))r  r€  )r0   r2   gü©ñÒMbP?c                 S   s   i | ]	\}}||  ¡ “qS r   r˜  r™  r   r   r%   r&   t  ré   z3SubplotToolQt._on_value_changed.<locals>.<dictcomp>r   )	rƒ  Z
setMinimumrF  Z
setMaximumrŒ  Zsubplots_adjustrp  r  rÃ   )re   r  r×   Zhigherr   r   r%   rŠ  m  s   
ÿzSubplotToolQt._on_value_changedc                 C   sV   | j  ¡  | j ¡ D ]\}}| d¡ | t| j j|ƒ¡ | d¡ q
| j j 	¡  d S )NTF)
rŒ  Ztight_layoutrƒ  rp  ÚblockSignalsÚsetValuer   r–  r  rÃ   )re   rš  r”  r   r   r%   r†  w  s   

zSubplotToolQt._tight_layoutc                 C   sJ   | j  ¡ D ]\}}| dd¡ | d¡ | |¡ | d¡ q|  ¡  d S )Nr   r   TF)r  rp  r‰  rž  rŸ  rŠ  )re   r”  rF  r   r   r%   r‡    s   

zSubplotToolQt._reset)
rv   rw   rx   rc   rk  r…  rŠ  r†  r‡  rz   r   r   rh   r%   rj  &  s    ,
rj  c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )Ú	ToolbarQtNc                 C   s²   t  | |¡ tj | |¡ |  tj ttjjj	ƒttjjj
ƒB ¡¡ t d¡}| tj ttjjjƒttjjjƒB ¡¡ | t tjjjtjjj¡¡ |  |¡| _i | _i | _d S )Nr%  )r   rc   r   r&  r'  r   r   r(  r   r)  r*  r2  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  Ú_message_actionÚ
_toolitemsÚ_groups)re   Ztoolmanagerr>  Zmessage_labelr   r   r%   rc   ‰  s(   
ÿÿ

ÿÿþ
zToolbarQt.__init__c           	         s¤   t  ˆ¡}|r| t ˆ|¡¡ | ˆ ¡ |r| |¡ ‡ ‡fdd„}|r1| d¡ |j 	|¡ n|j
 	|¡ ˆj ˆ g ¡ ˆ |ˆ ||¡ ˆjˆ   ||f¡ d S )Nc                      s   ˆ  ˆ ¡ d S r^   )Ztrigger_toolr   ©r  re   r   r%   Úhandler¥  rt   z'ToolbarQt.add_toolitem.<locals>.handlerT)r   ZQToolButtonZsetIconr  r/  rb  r1  r0  Útoggledrb   r‹  r¢  Ú
setdefaultÚ_add_to_grouprt  )	re   r  r  rš   r@  ÚdescriptionÚtoggler¯   r¥  r   r¤  r%   Úadd_toolitem›  s   



zToolbarQt.add_toolitemc           	      C   sV   | j  |g ¡}|s|  | j¡}| |¡ || }|  ||¡}| ||¡ || j |< d S r^   )r£  rR   ZinsertSeparatorr¡  rt  ZinsertWidgetr*   )	re   r  r  r¯   rš   ÚgrÚsepÚbeforeZwidgetr   r   r%   r¨  ±  s   
zToolbarQt._add_to_groupc                 C   sH   || j vrd S | j | D ]\}}|j |¡ | |¡ |j |¡ qd S r^   )r¢  r¦  Z
disconnectr]  rb   )re   r  r¦  r¯   r¥  r   r   r%   Útoggle_toolitem»  s   

ýzToolbarQt.toggle_toolitemc                 C   s*   | j | D ]	\}}| d ¡ q| j |= d S r^   )r¢  Z	setParent)re   r  r¯   r¥  r   r   r%   Úremove_toolitemÃ  s   zToolbarQt.remove_toolitemc                 C   s   |   | j¡ |¡ d S r^   )ZwidgetForActionr¡  rb  rc  r   r   r%   re  È  s   zToolbarQt.set_messager^   )	rv   rw   rx   rc   r«  r¨  r¯  r°  re  r   r   r   r%   r   ˆ  s    

r   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚConfigureSubplotsQtc                    s   t ƒ j|i |¤Ž d | _d S r^   )r?   rc   r-  rd   rh   r   r%   rc   Î  s   
zConfigureSubplotsQt.__init__c                 G   s   t  | ¡ d S r^   )r  rl  r  r   r   r%   ÚtriggerÒ  rt   zConfigureSubplotsQt.trigger)rv   rw   rx   rc   r²  rz   r   r   rh   r%   r±  Ì  s    r±  c                   @   ó   e Zd Zdd„ ZdS )ÚSaveFigureQtc                 G   ó   t  |  ¡ ¡ d S r^   )r  r{  Ú"_make_classic_style_pseudo_toolbarr  r   r   r%   r²  Ø  ó   ÿzSaveFigureQt.triggerN©rv   rw   rx   r²  r   r   r   r%   r´  Ö  ó    r´  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚRubberbandQtc                 C   s   t  |  ¡ d ||||¡ d S r^   )r  rg  r¶  )re   rø   rú   rù   rû   r   r   r%   rg  ß  s   ÿzRubberbandQt.draw_rubberbandc                 C   rµ  r^   )r  rh  r¶  rk   r   r   r%   rh  ã  r·  zRubberbandQt.remove_rubberbandN)rv   rw   rx   rg  rh  r   r   r   r%   rº  Ý  s    rº  c                   @   r³  )ÚHelpQtc                 G   s   t j d d|  ¡ ¡ d S )NZHelp)r   rS  ÚinformationZ_get_help_htmlr  r   r   r%   r²  ê  s   zHelpQt.triggerNr¸  r   r   r   r%   r»  è  r¹  r»  c                   @   r³  )ÚToolCopyToClipboardQTc                 O   s"   | j  ¡ }tj ¡  ¡  |¡ d S r^   )r  Zgrabr   rL   rM   Ú	clipboardZ	setPixmap)re   rf   rg   Zpixmapr   r   r%   r²  ð  s   
zToolCopyToClipboardQT.triggerNr¸  r   r   r   r%   r½  î  r¹  r½  c                   @   s   e Zd ZeZeZeZej	Z
dS )Ú
_BackendQTN)rv   rw   rx   r   Zbackend_versionr{   ZFigureCanvasr|   ZFigureManagerr  Zmainloopr   r   r   r%   r¿  ù  s
    
r¿  )NÚ	functoolsrq  rP   rð   rJ   rN   r   r   r   Zmatplotlib._pylab_helpersr   Zmatplotlib.backend_basesr   r   r   r	   r
   r   r   r   r   r   r   r   r   Z+matplotlib.backends.qt_editor.figureoptionsÚbackendsZ	qt_editorrY  r%  r   r   r   r   r   r   r   r   r   rU   rÍ   rÑ   ZMOVEZHANDZPOINTERZSELECT_REGIONZWAITZRESIZE_HORIZONTALZRESIZE_VERTICALr˜   Ú	lru_cacher\   r]   rÂ   r{   ZQMainWindowr   r|   r&  r  r  rj  r   Z_register_tool_classZConfigureSubplotsBaser±  ZSaveFigureBaser´  ZRubberbandBaserº  ZToolHelpBaser»  ZToolCopyToClipboardBaser½  Z_toolbar2_classZ_toolmanager_toolbar_classZexportr¿  r   r   r   r%   Ú<module>   sþ    <(ÿþýüûúùø	÷
öõôóòñðïîíëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Úÿ-ý
ùÿ
9  @r ;bD	
