Ë
    íÍ:jz\  ã                   óÒ  — 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	m
Z
mZmZmZmZmZ 	 d dlmZ 	  edd«        edd«        ed	d
«       d dlZd dlmZmZmZmZmZ ddlmZ ddlmZm Z m!Z!m"Z"m#Z$ ejJ                  dk\  Z& ejN                  ddd «      du Z( G d„ de ejR                  «      Z* G d„ de"ejV                  «      Z, G d„ de	ejV                  «      Z- ej\                  e*«       G d„ dej^                  «      «       Z0 ej\                  e*«       G d„ dejb                  «      «       Z2 ej\                  e*«       G d„ dejf                  «      «       Z4 ej\                  e*ejj                  «        ej\                  e*ejl                  «       e-Z7 G d„ de!«      Z8ejr                   G d „ d!e«      «       Z:y# e$ rZ ed«      e‚dZ[ww xY w# e$ rZ ee«      e‚dZ[ww xY w)"é    N)Ú_apiÚbackend_toolsÚcbook)ÚToolContainerBaseÚMouseButtonÚKeyEventÚLocationEventÚ
MouseEventÚResizeEventÚ
CloseEvent)Úrequire_versionz#The GTK4 backends require PyGObjectÚGtkz4.0ÚGdkÚ	GdkPixbufz2.0)ÚGioÚGLibr   r   r   é   )Ú_backend_gtk)Ú_BackendGTKÚ_FigureCanvasGTKÚ_FigureManagerGTKÚ_NavigationToolbar2GTKÚTimerGTK)é   é/   r   é   é   c                   óâ   ‡ — e Zd ZdZdZ ej                  d„ «      Zdˆ 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d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ˆ xZ!S )ÚFigureCanvasGTK4Úgtk4Fc                 ó   — t         S ©N)ÚFigureManagerGTK4)Úclss    úu/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/matplotlib/backends/backend_gtk4.pyú<lambda>zFigureCanvasGTK4.<lambda>*   s   € Ô3D€ ó    c                 ó&  •— t         ‰	| �  |¬«       | j                  d«       | j                  d«       d| _        d | _        | j                  | j                  «       | j                  d| j                  «       t        r| j                  d| j                  «       n| j                  d| j                  «       t        j                  «       }|j                  d«       |j                  d| j                   «       |j                  d| j"                  «       | j%                  |«       t        j&                  «       }|j                  d	| j(                  «       |j                  d
| j*                  «       | j%                  |«       t        j,                  «       }|j                  d| j.                  «       |j                  d| j0                  «       |j                  d| j2                  «       | j%                  |«       t        j4                  j7                  t        j8                  j:                  «      }|j                  d| j<                  «       | j%                  |«       | j?                  d«       t        j@                  «       }d}t        jB                  ddd«      €|jE                  |d«       n |jE                  |jG                  d«      «       | jI                  «       }|jK                  |t        jL                  «       |jO                  d«       y )N)ÚfigureTr   ÚresizeÚrealizeznotify::scale-factorÚpressedÚreleasedzkey-pressedzkey-releasedÚmotionÚenterÚleaveÚscrollz/.matplotlib-canvas { background-color: white; }r   é	   r   éÿÿÿÿzutf-8zmatplotlib-canvas)(ÚsuperÚ__init__Úset_hexpandÚset_vexpandÚ_idle_draw_idÚ_rubberband_rectÚset_draw_funcÚ
_draw_funcÚconnectÚresize_eventÚ_GTK_GE_4_12Ú_realize_eventÚ_update_device_pixel_ratior   ÚGestureClickÚ
set_buttonÚbutton_press_eventÚbutton_release_eventÚadd_controllerÚEventControllerKeyÚkey_press_eventÚkey_release_eventÚEventControllerMotionÚmotion_notify_eventÚenter_notify_eventÚleave_notify_eventÚEventControllerScrollÚnewÚEventControllerScrollFlagsÚVERTICALÚscroll_eventÚset_focusableÚCssProviderÚcheck_versionÚload_from_dataÚencodeÚget_style_contextÚadd_providerÚ#STYLE_PROVIDER_PRIORITY_APPLICATIONÚ	add_class)
Úselfr)   ÚclickÚkeyr.   r1   ÚcssÚstyleÚ	style_ctxÚ	__class__s
            €r%   r5   zFigureCanvasGTK4.__init__,   sT  ø€ Ü‰Ñ ÐÔ'à×Ñ˜ÔØ×Ñ˜ÔàˆÔØ $ˆÔà×Ñ˜4Ÿ?™?Ô+Ø�‰�X˜t×0Ñ0Ô1ÝØ�L‰L˜ D×$7Ñ$7Õ8à�L‰LÐ/°×1PÑ1PÔQä× Ñ Ó"ˆØ×Ñ˜ÔØ�‰�i ×!8Ñ!8Ô9Ø�‰�j $×";Ñ";Ô<Ø×Ñ˜EÔ"ä×$Ñ$Ó&ˆØ�‰�M 4×#7Ñ#7Ô8Ø�‰�N D×$:Ñ$:Ô;Ø×Ñ˜CÔ ä×*Ñ*Ó,ˆØ�‰�x ×!9Ñ!9Ô:Ø�‰�w × 7Ñ 7Ô8Ø�‰�w × 7Ñ 7Ô8Ø×Ñ˜FÔ#ä×*Ñ*×.Ñ.Ü×*Ñ*×3Ñ3ó5ˆà�‰�x ×!2Ñ!2Ô3Ø×Ñ˜FÔ#à×Ñ˜4Ô ä�o‰oÓˆØAˆÜ×Ñ˜Q  1Ó%Ð-Ø×Ñ˜u bÕ)à×Ñ˜uŸ|™|¨GÓ4Ô5Ø×*Ñ*Ó,ˆ	Ø×Ñ˜s¤C×$KÑ$KÔLØ×ÑÐ/Õ0r'   c                 ó8   — t        d| «      j                  «        y )NÚclose_event)r   Ú_process©r[   s    r%   ÚdestroyzFigureCanvasGTK4.destroy^   s   € Ü�= $Ó'×0Ñ0Õ2r'   c                 óL   — | j                  t        j                  |«      «       y r"   )Úset_cursor_from_namer   Úmpl_to_gtk_cursor_name)r[   Úcursors     r%   Ú
set_cursorzFigureCanvasGTK4.set_cursora   s   € à×!Ñ!¤,×"EÑ"EÀfÓ"MÕNr'   c                 óT  — |€_| j                  «       j                  «       }|j                  | j                  «       j	                  «       j                  «       «      \  }}}}n|\  }}|| j                  z  }| j                  j                  j                  || j                  z  z
  }||fS )a™  
        Convert the *xy* position of a GTK event, or of the current cursor
        position if *xy* is None, to Matplotlib coordinates.

        GTK use 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.
        )
Ú
get_nativeÚget_surfaceÚget_device_positionÚget_displayÚget_default_seatÚget_pointerÚdevice_pixel_ratior)   ÚbboxÚheight)r[   ÚxyÚsurfaceÚis_overÚxÚyÚmasks          r%   Ú_mpl_coordszFigureCanvasGTK4._mpl_coordse   sŸ   € ð ˆ:Ø—o‘oÓ'×3Ñ3Ó5ˆGØ")×"=Ñ"=Ø× Ñ Ó"×3Ñ3Ó5×AÑAÓCó#EÑˆG�Q˜™4ð ‰DˆAˆqØ�×'Ñ'Ñ'ˆà�K‰K×Ñ×#Ñ# a¨$×*AÑ*AÑ&AÑAˆØ�!ˆtˆr'   c                 óª   — t        d| g| j                  «       ¢­|| j                  |«      t        r|j	                  «       nd dœŽj                  «        y)NrQ   )ÚstepÚ	modifiersÚguiEventT)r
   r|   Ú_mpl_modifiersÚ_GOBJECT_GE_3_47Úget_current_eventrd   )r[   Ú
controllerÚdxÚdys       r%   rQ   zFigureCanvasGTK4.scroll_event{   sR   € ÜØ˜Dð	
Ø#'×#3Ñ#3Ó#5ñ	
Ø<>Ø×)Ñ)¨*Ó5Ý7G�Z×1Ñ1Ô3ÈTò	
÷ ‰(Œ*Ør'   c                 óî   — t        d| g| j                  ||f«      ¢|j                  «       ‘­| j                  |«      t        r|j                  «       nd dœŽj                  «        | j                  «        y )NrC   ©r   r€   )r
   r|   Úget_current_buttonr�   r‚   rƒ   rd   Ú
grab_focus©r[   r„   Ún_pressry   rz   s        r%   rC   z#FigureCanvasGTK4.button_press_eventƒ   so   € ÜØ  $ð	
Ø)-×)9Ñ)9¸1¸a¸&Ó)Að	
à×)Ñ)Ó+ñ	
ð ×)Ñ)¨*Ó5Ý7G�Z×1Ñ1Ô3ÈTò		
÷
 ‰(Œ*Ø�‰Õr'   c                 óÎ   — t        d| g| j                  ||f«      ¢|j                  «       ‘­| j                  |«      t        r|j                  «       nd dœŽj                  «        y )NrD   rˆ   )r
   r|   r‰   r�   r‚   rƒ   rd   r‹   s        r%   rD   z%FigureCanvasGTK4.button_release_eventŒ   se   € ÜØ" Dð	
Ø+/×+;Ñ+;¸QÀ¸FÓ+Cð	
à×)Ñ)Ó+ñ	
ð ×)Ñ)¨*Ó5Ý7G�Z×1Ñ1Ô3ÈTò		
÷
 ‰(�*r'   c           	      ó¬   — t        d| | j                  |||«      g| j                  «       ¢­dt        r|j	                  «       nd iŽj                  «        y)NrG   r€   T©r   Ú_get_keyr|   r‚   rƒ   rd   ©r[   r„   ÚkeyvalÚkeycodeÚstates        r%   rG   z FigureCanvasGTK4.key_press_event”   sS   € ÜØ˜t T§]¡]°6¸7ÀEÓ%Jð	
à×ÑÓò	
õ 8H�Z×1Ñ1Ô3ÈTñ	
÷ ‰(Œ*Ør'   c           	      ó¬   — t        d| | j                  |||«      g| j                  «       ¢­dt        r|j	                  «       nd iŽj                  «        y)NrH   r€   Tr�   r‘   s        r%   rH   z"FigureCanvasGTK4.key_release_eventœ   sS   € ÜØ  t§}¡}°V¸WÀeÓ'Lð	
à×ÑÓò	
õ 8H�Z×1Ñ1Ô3ÈTñ	
÷ ‰(Œ*Ør'   c                 óÎ   — t        d| g| j                  ||f«      ¢­| j                  |«      | j                  |«      t        r|j                  «       nd dœŽj                  «        y )NrJ   )Úbuttonsr   r€   )r
   r|   Ú_mpl_buttonsr�   r‚   rƒ   rd   ©r[   r„   ry   rz   s       r%   rJ   z$FigureCanvasGTK4.motion_notify_event¤   s`   € ÜØ! 4ð	
Ø*.×*:Ñ*:¸A¸q¸6Ó*Bñ	
à×%Ñ% jÓ1Ø×)Ñ)¨*Ó5Ý7G�Z×1Ñ1Ô3ÈTò		
÷
 ‰(�*r'   c                 ó¬   — t        d| g| j                  ||f«      ¢­| j                  «       t        r|j	                  «       nd dœŽj                  «        y )NÚfigure_enter_eventrˆ   ©r	   r|   r�   r‚   rƒ   rd   r™   s       r%   rK   z#FigureCanvasGTK4.enter_notify_event¬   sP   € ÜØ  $ð	
Ø)-×)9Ñ)9¸1¸a¸&Ó)Añ	
à×)Ñ)Ó+Ý7G�Z×1Ñ1Ô3ÈTò	
÷ ‰(�*r'   c                 ó¦   — t        d| g| j                  «       ¢­| j                  «       t        r|j	                  «       nd dœŽj                  «        y )NÚfigure_leave_eventrˆ   rœ   )r[   r„   s     r%   rL   z#FigureCanvasGTK4.leave_notify_event³   sJ   € ÜØ  $ð	
Ø)-×)9Ñ)9Ó);ñ	
à×)Ñ)Ó+Ý7G�Z×1Ñ1Ô3ÈTò	
÷ ‰(�*r'   c                 ó(  — | j                  «        | j                  j                  }|| j                  z  |z  }|| j                  z  |z  }| j                  j	                  ||d¬«       t        d| «      j                  «        | j                  «        y )NF)Úforwardr=   )r@   r)   Údpirs   Úset_size_inchesr   rd   Ú	draw_idle)r[   ÚareaÚwidthru   r¡   ÚwinchÚhinchs          r%   r=   zFigureCanvasGTK4.resize_eventº   s{   € Ø×'Ñ'Ô)Ø�k‰k�o‰oˆØ˜×/Ñ/Ñ/°#Ñ5ˆØ˜×0Ñ0Ñ0°3Ñ6ˆØ�‰×#Ñ# E¨5¸%Ð#Ô@Ü�N DÓ)×2Ñ2Ô4Ø�‰Õr'   c                 óž  — | j                  «       j                  «       }|j                  | j                  «       j	                  «       j                  «       «      \  }}}}t        j                  t        j                  j                  ft        j                  t        j                  j                  ft        j                  t        j                  j                  ft        j                  t        j                  j                   ft        j"                  t        j                  j$                  fg}|D ��	ch c]  \  }}	||	z  sŒ|’Œ c}	}S c c}	}w r"   )rm   rn   ro   rp   rq   rr   r   ÚLEFTr   ÚModifierTypeÚBUTTON1_MASKÚMIDDLEÚBUTTON2_MASKÚRIGHTÚBUTTON3_MASKÚBACKÚBUTTON4_MASKÚFORWARDÚBUTTON5_MASK©
r[   r„   rw   rx   ry   rz   Úevent_stateÚ	mod_tableÚnamer{   s
             r%   r˜   zFigureCanvasGTK4._mpl_buttonsÃ   sý   € ð —/‘/Ó#×/Ñ/Ó1ˆØ%,×%@Ñ%@Ø×ÑÓ×/Ñ/Ó1×=Ñ=Ó?ó&AÑ"ˆ��A�{ô ×Ñœs×/Ñ/×<Ñ<Ð=Ü×Ñ¤×!1Ñ!1×!>Ñ!>Ð?Ü×Ñ¤× 0Ñ 0× =Ñ =Ð>Ü×Ñœs×/Ñ/×<Ñ<Ð=Ü× Ñ ¤#×"2Ñ"2×"?Ñ"?Ð@ð
ˆ	ð (1×G™˜˜t°KÀ$Ó4F’ÓGÐGùÓGs   Ä3E	ÅE	c                 ó  — |€_| j                  «       j                  «       }|j                  | j                  «       j	                  «       j                  «       «      \  }}}}n|j                  «       }dt        j                  j                  fdt        j                  j                  fdt        j                  j                  fdt        j                  j                  fg}|D ��	cg c]  \  }}	||	z  sŒ|‘Œ c}	}S c c}	}w )NÚctrlÚaltÚshiftr4   )rm   rn   ro   rp   rq   rr   Úget_current_event_stater   rª   ÚCONTROL_MASKÚALT_MASKÚ
SHIFT_MASKÚ
SUPER_MASKr´   s
             r%   r�   zFigureCanvasGTK4._mpl_modifiers×   sÝ   € ØÐØ—o‘oÓ'×3Ñ3Ó5ˆGØ)0×)DÑ)DØ× Ñ Ó"×3Ñ3Ó5×AÑAÓCó*EÑ&ˆG�Q˜™;ð %×<Ñ<Ó>ˆKà”S×%Ñ%×2Ñ2Ð3Ø”C×$Ñ$×-Ñ-Ð.Ø”c×&Ñ&×1Ñ1Ð2Ø”c×&Ñ&×1Ñ1Ð2ð	
ˆ	ð (1×G™˜˜t°KÀ$Ó4F’ÓGÐGùÓGs   Ã%C;Ã3C;c                 ó  — t        t        j                  |«      «      }t        j                  |t        j
                  |«      «      }dt        j                  j                  dfdt        j                  j                  dfdt        j                  j                  dfdt        j                  j                  dfg}|D ���	cg c]'  \  }}}	|	|k7  r||z  r|dk(  r|j                  «       s|‘Œ) }
}}}	dj                  g |
¢|‘«      S c c}	}}w )Nr¹   Úcontrolrº   r»   r4   ú+)Úchrr   Úkeyval_to_unicoder   Ú_unikey_or_keysym_to_mplkeyÚkeyval_namerª   r½   r¾   r¿   rÀ   ÚisprintableÚjoin)r[   r’   r“   r”   Úunikeyr]   r   Úmodr{   Úmod_keyÚmodss              r%   r�   zFigureCanvasGTK4._get_keyæ   s  € Ü”S×*Ñ*¨6Ó2Ó3ˆÜ×/Ñ/ØÜ�O‰O˜FÓ#ó%ˆð ”S×%Ñ%×2Ñ2°IÐ>Ø”C×$Ñ$×-Ñ-¨uÐ5Ø”c×&Ñ&×1Ñ1°7Ð;Ø”c×&Ñ&×1Ñ1°7Ð;ð	
ˆ	ð +4÷Dð DÙ&�C˜˜wØ˜3’ 5¨4¢<Ø š¨F×,>Ñ,>Ô,@ò ðDˆò Dð �x‰x˜˜$˜ ˜Ó%Ð%ùô	Ds   Ã ,Dc                 ó˜   — | j                  «       j                  «       }|j                  d| j                  «       | j                  «        y )Nznotify::scale)rm   rn   r<   r@   )r[   Úobjrw   s      r%   r?   zFigureCanvasGTK4._realize_event÷   s7   € Ø—/‘/Ó#×/Ñ/Ó1ˆØ�‰˜¨×)HÑ)HÔIØ×'Ñ'Õ)r'   c                 óÖ   — t         r-| j                  «       j                  «       j                  «       }n| j	                  «       }|€J ‚| j                  |«      r| j                  «        y y r"   )r>   rm   rn   Ú	get_scaleÚget_scale_factorÚ_set_device_pixel_ratioÚdraw)r[   ÚargsÚkwargsÚscales       r%   r@   z+FigureCanvasGTK4._update_device_pixel_ratioü   s[   € õ Ø—O‘OÓ%×1Ñ1Ó3×=Ñ=Ó?‰Eà×)Ñ)Ó+ˆEØÐ Ð Ð Ø×'Ñ'¨Ô.Ø�I‰I�Kð /r'   c                 ó2   — || _         | j                  «        y r"   )r9   Ú
queue_draw)r[   Úrects     r%   Ú_draw_rubberbandz!FigureCanvasGTK4._draw_rubberband  s   € Ø $ˆÔà�‰Õr'   c                 óL   — | j                  | |«       | j                  | |«       y r"   )Úon_draw_eventÚ
_post_draw)r[   Údrawing_areaÚctxr¥   ru   s        r%   r;   zFigureCanvasGTK4._draw_func  s    € Ø×Ñ˜4 Ô%Ø�‰˜˜cÕ"r'   c                 ó°  ‡ — ‰ j                   €y d}d}ˆ fd„‰ j                   D «       \  }}}}||z   }	||z   }
|j                  ||«       |j                  ||
«       |j                  ||«       |j                  |	|«       |j                  ||
«       |j                  |	|
«       |j                  |	|«       |j                  |	|
«       |j                  d«       |j	                  |«       |j                  ||fd«       |j                  ddd«       |j                  «        |j                  ||f|«       |j                  ddd«       |j                  «        y )Nr   r   c              3   ó<   •K  — | ]  }|‰j                   z  –— Œ y ­wr"   )rs   )Ú.0Údimr[   s     €r%   ú	<genexpr>z.FigureCanvasGTK4._post_draw.<locals>.<genexpr>  s$   øè ø€ ò :Øð ˜d×5Ñ5Õ5ñ :ùs   ƒr   )	r9   Úmove_toÚline_toÚset_antialiasÚset_line_widthÚset_dashÚset_source_rgbÚstroke_preserveÚstroke)r[   Úwidgetrà   ÚlwÚdashÚx0Úy0ÚwÚhÚx1Úy1s   `          r%   rÞ   zFigureCanvasGTK4._post_draw  s6  ø€ Ø× Ñ Ð(ØàˆØˆó:Ø#'×#8Ñ#8ô:‰ˆˆB��1à�!‰VˆØ�!‰Vˆð 	�‰�B˜ÔØ�‰�B˜ÔØ�‰�B˜ÔØ�‰�B˜ÔØ�‰�B˜ÔØ�‰�B˜ÔØ�‰�B˜ÔØ�‰�B˜Ôà×Ñ˜!ÔØ×Ñ˜2ÔØ�‰�d˜D�\ 1Ô%Ø×Ñ˜1˜a Ô#Ø×ÑÔà�‰�d˜D�\ 4Ô(Ø×Ñ˜1˜a Ô#Ø�
‰
�r'   c                  ó   — y r"   © )r[   rî   rà   s      r%   rÝ   zFigureCanvasGTK4.on_draw_event0  s   € àr'   c                 óF   — | j                  «       r| j                  «        y y r"   )Úis_drawablerÙ   re   s    r%   rÔ   zFigureCanvasGTK4.draw4  s   € à×ÑÔØ�O‰OÕð r'   c                 ód   ‡ — ‰ j                   dk7  ry ˆ fd„}t        j                  |«      ‰ _         y )Nr   c                  óN   •— 	 ‰j                  «        d‰_        y# d‰_        w xY w)Nr   F)rÔ   r8   )rÕ   r[   s    €r%   Ú	idle_drawz-FigureCanvasGTK4.draw_idle.<locals>.idle_draw=  s(   ø€ ð'Ø—	‘	”à%&�Ô"Øøð &'�Õ"ús   ƒ ›	$)r8   r   Úidle_add)r[   rý   s   ` r%   r£   zFigureCanvasGTK4.draw_idle9  s,   ø€ à×Ñ Ò"Øô	ô "Ÿ]™]¨9Ó5ˆÕr'   c                 ó¦   — t         j                  j                  «       }|j                  «       r#|j	                  d«       |j                  «       rŒ"y y )NT)r   ÚMainContextÚdefaultÚpendingÚ	iteration)r[   Úcontexts     r%   Úflush_eventszFigureCanvasGTK4.flush_eventsE  s:   € ä×"Ñ"×*Ñ*Ó,ˆØ�o‰oÔØ×Ñ˜dÔ#ð �o‰o×r'   r"   )"Ú__name__Ú
__module__Ú__qualname__Úrequired_interactive_frameworkÚsupports_blitr   ÚclasspropertyÚmanager_classr5   rf   rk   r|   rQ   rC   rD   rG   rH   rJ   rK   rL   r=   r˜   r�   r�   r?   r@   rÛ   r;   rÞ   rÝ   rÔ   r£   r  Ú__classcell__)ra   s   @r%   r   r   '   s£   ø„ Ø%+Ð"Ø€MØ&�D×&Ñ&Ñ'DÓE€Mõ01òd3òOóò,òòòòòòòòòHó(Hò&ò"*ò
	òò
#òò@òò

6ö$r'   r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚNavigationToolbar2GTK4c                 ó�  — t         j                  j                  | «       | j                  d«       i | _        | j
                  D �];  \  }}}}|€$| j                  t        j                  «       «       Œ/t         j                  j                  t        j                  j                  t        t        j                  d|› d�«      «      «      «      }|dv rt        j                   «       nt        j"                  «       x| j                  |<   }|j%                  |«       |j                  d«       |j                  d«       |j'                  dt)        | |«      «      |_        |j-                  |«       | j                  |«       �Œ> t        j.                  «       }|j1                  d«       |j3                  d	«       | j                  |«       t        j.                  «       | _        | j4                  j7                  t         j8                  j:                  «       | j                  | j4                  «       t=        j                  | |«       y )
NÚtoolbarÚimagesú-symbolic.svg)ÚzoomÚpanÚflatúimage-buttonÚclickedõ   <small>Â 
Â </small>T)r   ÚBoxr5   Úadd_css_classÚ_gtk_idsÚ	toolitemsÚappendÚ	SeparatorÚImageÚnew_from_giconr   ÚIconÚnew_for_stringÚstrr   Ú_get_data_pathÚToggleButtonÚButtonÚ	set_childr<   ÚgetattrÚ_signal_handlerÚset_tooltip_textÚLabelÚ
set_markupr6   ÚmessageÚset_justifyÚJustificationr®   r   )	r[   ÚcanvasÚtextÚtooltip_textÚ
image_fileÚcallbackÚimageÚbuttonÚlabels	            r%   r5   zNavigationToolbar2GTK4.__init__M  sÁ  € Ü�‰×Ñ˜Ôà×Ñ˜9Ô%àˆŒØ8<¿¹ó 	 Ñ4ˆD�, 
¨HØˆ|Ø—‘œCŸM™M›OÔ,ØÜ—I‘I×,Ñ,Ü—‘×'Ñ'Üœ×,Ñ,¨XØ0:¨|¸=Ð-IóKó LóMóNˆEð
 '/°/Ñ&A”× Ñ Ô"Ü—
‘
“ðˆD�M‰M˜$Ñ &ð ×Ñ˜UÔ#Ø× Ñ  Ô(Ø× Ñ  Ô0à%+§^¡^Øœ7 4¨Ó2ó&4ˆFÔ"à×#Ñ# LÔ1Ø�K‰K˜Öð%	 ô0 —	‘	“ˆØ×ÑØCô	Eà×Ñ˜$ÔØ�‰�EÔä—y‘y“{ˆŒØ�‰× Ñ ¤×!2Ñ!2×!8Ñ!8Ô9Ø�‰�D—L‘LÔ!ä×'Ñ'¨¨fÕ5r'   c                 óà  ‡ — t        j                  d‰ j                  j                  «       t         j                  j
                  d¬«      }|‰ _        t        j                  «       }|j                  d«       |j                  d«       |j                  |«       |j                  |«       g }d }t        ‰ j                  j                  «       j                  «       «      D ]‰  \  }\  }}t        j                  «       }|j                  |«       |D ]  }	|j                  d|	› �«       Œ |j                  |«       |j                  |«       ‰ j                  j!                  «       |v sŒˆ|}Œ‹ ||   g|d | ¢||dz   d  ¢}|j#                  dd	||«       |j%                  d|d
   «       |j'                  t(        j*                  j-                  t.        j0                  j3                  t4        j6                  d   «      «      «       |j9                  ‰ j                  j;                  «       «       t=        j>                  |j@                  d«      ˆ fd„«       }
|jC                  «        ‰ jD                  S )NzSave the figureT)ÚtitleÚtransient_forÚactionÚmodalz	All filesÚ*z*.r   ÚformatzFile formatr   úsavefig.directoryÚresponsec           
      ó  •— | j                  «       }| j                  d«      }‰j                  j                  «       |   d   }| j	                  «        d ‰_        |t        j                  j                  k7  ry t        j                  d   r1|j                  «       }|j                  «       t        j                  d<   	 ‰j                  j                  j                  |j                  «       |¬«       y # t        $ r…}t        j                   ‰j                  j#                  «       t        j$                  j&                  t        j(                  j*                  dt-        |«      ¬«      }|j/                  «        Y d }~y d }~ww xY w)Nr?  r   r@  )r?  T)r;  Úmessage_typer—   r=  r2  )Úget_fileÚ
get_choicer1  Úget_supported_filetypes_groupedrf   Ú_save_dialogr   ÚResponseTypeÚACCEPTÚmplÚrcParamsÚ
get_parentÚget_pathr)   ÚsavefigÚ	ExceptionÚMessageDialogÚget_rootÚMessageTypeÚERRORÚButtonsTypeÚOKr$  Úshow)ÚdialogrA  ÚfileÚfmtÚparentÚeÚmsgr[   s          €r%   Úon_responsez7NavigationToolbar2GTK4.save_figure.<locals>.on_responseœ  s  ø€ à—?‘?Ó$ˆDØ×#Ñ# HÓ-ˆCØ—+‘+×=Ñ=Ó?ÀÑDÀQÑGˆCØ�N‰NÔØ $ˆDÔØœ3×+Ñ+×2Ñ2Ò2Øä�|‰|Ð/Ò0ØŸ™Ó*�Ø4:·O±OÓ4E”—‘Ð0Ñ1ðØ—‘×"Ñ"×*Ñ*¨4¯=©=«?À3Ð*ÕGøÜò Ü×'Ñ'Ø"&§+¡+×"6Ñ"6Ó"8Ü!$§¡×!6Ñ!6ÜŸO™O×.Ñ.°dÜ˜Q›ô	!�ð
 —‘—
‘
ûðús   Â=5C3 Ã3	FÃ<A;E<Å<F)#r   ÚFileChooserNativer1  rQ  ÚFileChooserActionÚSAVErG  Ú
FileFilterÚset_nameÚadd_patternÚ
add_filterÚ
set_filterÚ	enumeraterF  Úitemsr  Úget_default_filetypeÚ
add_choiceÚ
set_choiceÚset_current_folderr   ÚFileÚnew_for_pathÚosÚpathÚ
expanduserrJ  rK  Úset_current_nameÚget_default_filenameÚ	functoolsÚpartialr<   rV  ÚUNKNOWN_SAVED_STATUS)r[   rÕ   rW  ÚffÚformatsÚdefault_formatÚir·   ÚfmtsrY  r]  s   `          r%   Úsave_figurez"NavigationToolbar2GTK4.save_figurew  s  ø€ Ü×&Ñ&Ø#ØŸ+™+×.Ñ.Ó0Ü×(Ñ(×-Ñ-Øô	ˆð
 #ˆÔä�^‰^ÓˆØ
�‰�KÔ Ø
�‰�sÔØ×Ñ˜"ÔØ×Ñ˜"ÔàˆØˆÜ(Ø—‘×;Ñ;Ó=×CÑCÓEó Gò 		#‰OˆA‰|��dä—‘Ó!ˆBØ�K‰K˜ÔØò +�Ø—‘  C 5˜zÕ*ð+à×Ñ˜bÔ!Ø�N‰N˜4Ô Ø�{‰{×/Ñ/Ó1°TÒ9Ø!"‘ð		#ð ˜>Ñ*ð 0¨W°_°nÐ-Eð 0Ø˜N¨1Ñ,Ð-Ð.ð0ˆà×Ñ˜( M°7¸GÔDØ×Ñ˜( G¨A¡JÔ/à×!Ñ!¤#§(¡(×"7Ñ"7Ü�G‰G×ÑœsŸ|™|Ð,?Ñ@ÓAó#Cô 	Dà×Ñ §¡× @Ñ @Ó BÔCä	×	Ñ	˜6Ÿ>™>¨:Ó	6ó	ó 
7ð	ð, 	�‰ŒØ×(Ñ(Ð(r'   N)r  r  r  r5   r{  rø   r'   r%   r  r  L  s   „ ò(6óT=)r'   r  c                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚToolbarGTK4r  c                 ó¢  — t        j                  | |«       t        j                  j                  | «       | j	                  dt        j
                  j                  «       t        j                  «       | _        | j                  | j                  «       i | _	        i | _
        t        j                  «       }|j                  d«       |j                  d«       | j                  |«       t        j                  «       | _        | j                  j                  t        j                   j"                  «       | j                  | j                  «       y )NÚorientationr  T)r   r5   r   r  Úset_propertyÚOrientationÚ
HORIZONTALÚ	_tool_boxr  Ú_groupsÚ
_toolitemsr,  r-  r6   Ú_messager/  r0  r®   )r[   Útoolmanagerr8  s      r%   r5   zToolbarGTK4.__init__º  sß   € Ü×"Ñ" 4¨Ô5Ü�‰×Ñ˜ÔØ×Ñ˜-¬¯©×)CÑ)CÔDô Ÿ™›ˆŒØ�‰�D—N‘NÔ#ØˆŒØˆŒô —	‘	“ˆØ×ÑØCô	Eà×Ñ˜$ÔØ�‰�EÔäŸ	™	›ˆŒØ�‰×!Ñ!¤#×"3Ñ"3×"9Ñ"9Ô:Ø�‰�D—M‘MÕ"r'   c                 ó`  — |rt        j                  «       }nt        j                  «       }|j                  |«       |j	                  d«       |�^t         j
                  j                  t        j                  j                  |«      «      }|j                  |«       |j	                  d«       |€d}| j                  |||«       |j                  d| j                  |«      }	|j                  |«       | j                  j!                  |g «       | j                  |   j#                  ||	f«       y )Nr  r  r3   r  )r   r&  r'  Ú	set_labelr  r   r!  r   r"  r#  r(  Ú_add_buttonr<   Ú
_call_toolr+  r…  Ú
setdefaultr  )
r[   r·   ÚgroupÚpositionr4  ÚdescriptionÚtoggler7  r6  Úsignals
             r%   Úadd_toolitemzToolbarGTK4.add_toolitemÓ  só   € áÜ×%Ñ%Ó'‰Fä—Z‘Z“\ˆFØ×Ñ˜ÔØ×Ñ˜VÔ$àÐ!Ü—I‘I×,Ñ,Ü—‘×'Ñ'¨
Ó3ó5ˆEà×Ñ˜UÔ#Ø× Ñ  Ô0àÐØˆHà×Ñ˜ ¨Ô1Ø—‘ 	¨4¯?©?¸DÓAˆØ×Ñ Ô,Ø�‰×"Ñ" 4¨Ô,Ø�‰˜Ñ×$Ñ$ f¨fÐ%5Õ6r'   c                 ó˜   — d g}| j                   |   j                  «       }|�$|j                  |«       |j                  «       }|�Œ$||   S r"   )r„  Úget_first_childr  Úget_next_sibling)r[   r�  rŽ  ÚchildrenÚchilds        r%   Ú_find_child_at_positionz#ToolbarGTK4._find_child_at_positionë  sU   € Ø�6ˆØ—‘˜UÑ#×3Ñ3Ó5ˆØÐØ�O‰O˜EÔ"Ø×*Ñ*Ó,ˆEð Ñð ˜Ñ!Ð!r'   c                 ó2  — || j                   vrZ| j                   r| j                  «        t        j                  «       }| j                  j                  |«       || j                   |<   | j                   |   j                  || j                  ||«      «       y r"   )r„  Ú_add_separatorr   r  rƒ  r  Úinsert_child_afterr˜  )r[   r7  r�  rŽ  Ú	group_boxs        r%   rŠ  zToolbarGTK4._add_buttonó  sv   € Ø˜Ÿ™Ñ$Ø�|Š|Ø×#Ñ#Ô%ÜŸ™›	ˆIØ�N‰N×!Ñ! )Ô,Ø"+ˆD�L‰L˜ÑØ�‰�UÑ×.Ñ.Ø�D×0Ñ0°¸ÓAõ	Cr'   c                 ó&   — | j                  |«       y r"   )Útrigger_tool)r[   Úbtnr·   s      r%   r‹  zToolbarGTK4._call_toolý  s   € Ø×Ñ˜$Õr'   c                 ó¶   — || j                   vry | j                   |   D ]8  \  }}|j                  |«       |j                  |«       |j                  |«       Œ: y r"   )r…  Úhandler_blockÚ
set_activeÚhandler_unblock)r[   r·   ÚtoggledÚtoolitemr‘  s        r%   Útoggle_toolitemzToolbarGTK4.toggle_toolitem   sX   € Ø�t—‘Ñ&ØØ $§¡°Ñ 5ò 	-ÑˆH�fØ×"Ñ" 6Ô*Ø×Ñ Ô(Ø×$Ñ$ VÕ,ñ	-r'   c                 óÎ   — | j                   j                  |g «      D ]F  \  }}| j                  D ]2  }|| j                  |   v sŒ| j                  |   j                  |«       Œ4 ŒH y r"   )r…  Úpopr„  Úremove)r[   r·   r¥  Ú_signalr�  s        r%   Úremove_toolitemzToolbarGTK4.remove_toolitem  sb   € Ø!%§¡×!4Ñ!4°T¸2Ó!>ò 	9ÑˆH�gØŸ™ò 9�Ø˜tŸ|™|¨EÑ2Ò2Ø—L‘L Ñ'×.Ñ.¨xÕ8ñ9ñ	9r'   c                 ó¶   — t        j                  «       }|j                  dt         j                  j                  «       | j
                  j                  |«       y )Nr  )r   r  r€  r�  rP   rƒ  r  )r[   Úseps     r%   rš  zToolbarGTK4._add_separator  s9   € Ü�m‰m‹oˆØ×Ñ˜¬¯©×(@Ñ(@ÔAØ�‰×Ñ˜cÕ"r'   c                 ó:   — | j                   j                  |«       y r"   )r†  r‰  )r[   Úss     r%   Úset_messagezToolbarGTK4.set_message  s   € Ø�‰×Ñ Õ"r'   N)r  r  r  Ú_icon_extensionr5   r’  r˜  rŠ  r‹  r¦  r«  rš  r°  rø   r'   r%   r}  r}  ·  s5   „ Ø%€Oò#ò27ò0"òCò ò-ò9ò#ó
#r'   r}  c                   ó   — e Zd Zd„ Zy)ÚSaveFigureGTK4c                 óJ   — t         j                  | j                  «       «       y r"   )r  r{  Ú"_make_classic_style_pseudo_toolbar)r[   rÕ   rÖ   s      r%   ÚtriggerzSaveFigureGTK4.trigger  s   € Ü×*Ñ*Ø×3Ñ3Ó5õ	7r'   N©r  r  r  r¶  rø   r'   r%   r³  r³    s   „ ó7r'   r³  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚHelpGTK4c                 ó  — dddddœ}|j                  d«      }|dd D �cg c]
  }d	|z   d
z   ‘Œ }}|d   }||v r||   }n5t        |«      dkD  r|j                  «       }n|j                  «       r|dgz  }dj	                  |«      |z   S c c}w )z‚
        Convert Matplotlib key presses to GTK+ accelerator identifiers.

        Related to `FigureCanvasGTK4._get_key`.
        Ú	BackSpaceÚ	Page_DownÚPage_UpÚScroll_Lock)Ú	backspaceÚpagedownÚpageupÚscroll_lockrÃ   Nr3   ú<ú>r   z<shift>Ú )ÚsplitÚlenÚ
capitalizeÚisupperrÉ   )r[   r]   ÚspecialÚpartsrË   rÍ   s         r%   Ú_normalize_shortcutzHelpGTK4._normalize_shortcut   s¤   € ð %Ø#ØØ(ñ	
ˆð —	‘	˜#“ˆØ+0°°"¨:Ö6 C��c‘	˜C“Ð6ˆÐ6Ø�B‰iˆà�'‰>Ø˜#‘,‰CÜ�‹X˜Š\Ø—.‘.Ó"‰CØ�[‰[Œ]Ø�Y�KÑˆDà�w‰w�t‹}˜sÑ"Ð"ùò 7s    B	c                 ó2   — d|vxr |j                  d«       S )zÖ
        Check for a valid shortcut to be displayed.

        - GTK will never send 'cmd+' (see `FigureCanvasGTK4._get_key`).
        - The shortcut window only shows keyboard shortcuts, not mouse buttons.
        zcmd+zMouseButton.)Ú
startswith)r[   r]   s     r%   Ú_is_valid_shortcutzHelpGTK4._is_valid_shortcut:  s    € ð ˜SÐ ÒG¨¯©¸Ó)GÐ%GÐGr'   c           	      óú  ‡ — t        j                  «       }t        ‰ j                  j                  j                  «       «      D ]Û  \  }}|j                  sŒt        j                  «       }|j                  |«       |j                  «       }|�$|j                  d«       |j                  «       }|�Œ$t        j                  dj                  ˆ fd„‰ j                  j                  |«      D «       «      |j                  |j                  ¬«      }|j                  |«       ŒÝ t        j                   dd‰ j"                  j$                  j'                  «       ¬«      }|j)                  |«       |j+                  «        y )NFú c              3   ób   •K  — | ]&  }‰j                  |«      r‰j                  |«      –— Œ( y ­wr"   )rÏ  rÌ  )rã   r]   r[   s     €r%   rå   z#HelpGTK4.trigger.<locals>.<genexpr>W  s2   øè ø€ ò %5àØ×.Ñ.¨sÔ3ð ×,Ñ,¨S×1ñ%5ùs   ƒ,/)Úacceleratorr:  ÚsubtitleÚHelpT)r:  r=  r;  )r   ÚShortcutsSectionÚsortedr‡  Útoolsrg  r�  ÚShortcutsGroupr  r”  Úset_visibler•  ÚShortcutsShortcutrÉ   Úget_tool_keymapr·   ÚShortcutsWindowÚ_figurer1  rQ  r(  rV  )	r[   rÕ   Úsectionr·   Útoolr�  r—  ÚshortcutÚwindows	   `        r%   r¶  zHelpGTK4.triggerC  sA  ø€ Ü×&Ñ&Ó(ˆä  ×!1Ñ!1×!7Ñ!7×!=Ñ!=Ó!?Ó@ò 	#‰JˆD�$Ø×#Ò#Øô ×&Ñ&Ó(ˆEØ�N‰N˜5Ô!à×)Ñ)Ó+ˆEØÐ#Ø×!Ñ! %Ô(Ø×.Ñ.Ó0�ð Ñ#ô ×,Ñ,ØŸH™Hó %5à#×/Ñ/×?Ñ?ÀÓEô%5ó 5ð —i‘iØ×)Ñ)ô+ˆHð �L‰L˜Õ"ð/	#ô2 ×$Ñ$ØØØŸ,™,×-Ñ-×6Ñ6Ó8ô:ˆð 	×Ñ˜Ô!à�‰�r'   N)r  r  r  rÌ  rÏ  r¶  rø   r'   r%   r¹  r¹    s   „ ò#ò4Hó"r'   r¹  c                   ó   — e Zd Zd„ Zy)ÚToolCopyToClipboardGTK4c                 ó¸  — t        j                  «       5 }| j                  j                  |«       | j                  j	                  «       \  }}t
        j                  j                  |j                  «       t
        j                  j                  dd|||dz  «      }d d d «       | j                  j                  «       }|j                  «       y # 1 sw Y   Œ5xY w)NTé   r   )ÚioÚBytesIOr1  Ú
print_rgbaÚget_width_heightr   ÚPixbufÚnew_from_dataÚ	getbufferÚ
ColorspaceÚRGBÚget_clipboardÚset)r[   rÕ   rÖ   Úfró   rô   ÚpbÚ	clipboards           r%   r¶  zToolCopyToClipboardGTK4.triggerj  s¦   € Ü�Z‰Z‹\ð 	>˜QØ�K‰K×"Ñ" 1Ô%Ø—;‘;×/Ñ/Ó1‰DˆAˆqÜ×!Ñ!×/Ñ/°·±³Ü09×0DÑ0D×0HÑ0HÈ$Ø01°1°a¸¸1¹ó>ˆB÷	>ð —K‘K×-Ñ-Ó/ˆ	Ø�‰�bÕ÷	>ð 	>ús   •BCÃCNr·  rø   r'   r%   rä  rä  h  s   „ ór'   rä  c                   ó   — e Zd ZeZeZy)r#   N)r  r  r  r  Ú_toolbar2_classr}  Ú_toolmanager_toolbar_classrø   r'   r%   r#   r#   |  s   „ Ø,€OØ!,Ñr'   r#   c                   ó   — e Zd ZeZeZy)Ú_BackendGTK4N)r  r  r  r   ÚFigureCanvasr#   ÚFigureManagerrø   r'   r%   rù  rù  �  s   „ à#€LØ%�Mr'   rù  );rs  rç  rn  Ú
matplotlibrJ  r   r   r   Úmatplotlib.backend_basesr   r   r   r	   r
   r   r   Úgir   Úgi_require_versionÚImportErrorÚerrÚ
ValueErrorr[  Úgi.repositoryr   r   r   r   r   rÅ  r   r   r   r   r   r   Ú	TimerGTK4Úversion_infor‚   rT   r>   ÚDrawingArear   r  r  r}  Ú_register_tool_classÚSaveFigureBaser³  ÚToolHelpBaser¹  ÚToolCopyToClipboardBaserä  ÚConfigureSubplotsGTKÚRubberbandGTKÚToolbarr#   Úexportrù  rø   r'   r%   ú<module>r     s  ðÛ Û 	Û 	ã ß 1Ñ 1÷B÷ Bñ BðFÝ8ð	 ñ �u˜eÔ$Ù�u˜eÔ$Ù�{ EÔ*ó 
ß 8Õ 8Ý ÷õ ð
 —?‘? jÑ0Ð Ø ˆs× Ñ   B¨Ó*¨dÐ2€ôb$Ð'¨¯©ô b$ôJ	h)Ð3°S·W±Wô h)ôV]#Ð# S§W¡Wô ]#ð@ $€×#Ñ#Ð$4Ó5ô7�]×1Ñ1ó 7ó 6ð7ð $€×#Ñ#Ð$4Ó5ôFˆ}×)Ñ)ó Fó 6ðFðR $€×#Ñ#Ð$4Ó5ô	˜m×CÑCó 	ó 6ð	ð #€× "Ñ "Ø�l×7Ñ7ô9à "€× "Ñ "Ø�l×0Ñ0ô2à
€ô-Ð)ô -ð
 ×Ñô&�;ó &ó ñ&øðk ò FÙ
Ð;Ó
<À#ÐEûðFûð ò  ñ �a‹.˜aÐûð ús.   ®F= µG Æ=GÇ	GÇGÇG&Ç	G!Ç!G&