ó
    “’¤j6,  ã                   óØ  • S r SSKrSSKrSSKrSSKJrJrJr  SSKJ	r	  SSK
JrJrJrJrJr  SSKJr  SSKrSSKJrJrJrJr   \R0                  " S5        \R6                  " \5      rSqS
 rS r S r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\RL                  5      r' " S S\RP                  5      r) " S S\5      r*g! \ a  r\" S	5      \eSrCff = f)z)
Common code for GTK3 and GTK4 backends.
é    N)Ú_apiÚbackend_toolsÚcbook)ÚGcf)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚNavigationToolbar2Ú	TimerBase)ÚCursors)ÚGdkÚGioÚGLibÚGtkÚcairoz Gtk-based backends require cairoc                 ód   • U R                  5        H  nUR                  5         M     SU l        S qg ©NT)Úget_windowsÚcloseÚ_created_by_matplotlibÚ_application)ÚappÚwins     Ú®C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\matplotlib/backends/_backend_gtk.pyÚ_shutdown_applicationr      s-   € ð �‰Ö ˆØ�	‰	Žñ !ð "&€CÔà�Ló    c                  ó  • [         cû  [        R                  R                  5       n U b  [	        U SS5      (       aÆ  [
        R                  R                  5       (       d  [        S5      e[        R                  R                  S[        R                  R                  5      q [         R                  SS 5        [         R                  S[        5        [         R                  5         [         R"                  " 5         [         $ U q [         $ )Nr   FzInvalid DISPLAY variablezorg.matplotlib.Matplotlib3Úactivatec                  ó   • g ©N© )ÚargsÚkwargss     r   Ú<lambda>Ú%_create_application.<locals>.<lambda>;   s   € ÀTr   Úshutdown)r   r   ÚApplicationÚget_defaultÚgetattrÚmplÚ_c_internal_utilsÚdisplay_is_validÚRuntimeErrorr   ÚnewÚApplicationFlagsÚ
NON_UNIQUEÚconnectr   Úregisterr   Ú_setup_new_guiapp)r   s    r   Ú_create_applicationr4   -   sË   € ô ÑÜ�o‰o×)Ñ)Ó+ˆØ‰;œ' #Ð'?À×GÑGô ×(Ñ(×9Ñ9×;Ñ;Ü"Ð#=Ó>Ð>ÜŸ?™?×.Ñ.Ð/KÜ/2×/CÑ/C×/NÑ/NóPˆLô × Ñ  Ñ-IÔJÜ× Ñ  Ô-BÔCÜ×!Ñ!Ô#Ü×#Ò#Ô%ô Ðð ˆLäÐr   c                 ó  • [         R                  " [        R                  S[        R                  S[        R
                  S[        R                  S[        R                  S[        R                  S[        R                  S0U S9$ )	NÚmoveÚpointerÚdefaultÚ	crosshairÚwaitz	ew-resizez	ns-resize)Úcursor)
r   Úgetitem_checkedr   ÚMOVEÚHANDÚPOINTERÚSELECT_REGIONÚWAITÚRESIZE_HORIZONTALÚRESIZE_VERTICAL)Ú
mpl_cursors    r   Úmpl_to_gtk_cursor_namerE   E   sd   € Ü×ÒÜ�‰�fÜ�‰�iÜ�‰˜Ü×Ñ˜{Ü�‰�fÜ×!Ñ! ;Ü×Ñ ð!ð ñð r   c                   óJ   ^ • \ rS rSrSrU 4S jrS rS rS rU 4S jr	Sr
U =r$ )	ÚTimerGTKéQ   z0Subclass of `.TimerBase` using GTK timer events.c                 ó4   >• S U l         [        TU ]  " U0 UD6  g r    )Ú_timerÚsuperÚ__init__)Úselfr"   r#   Ú	__class__s      €r   rL   ÚTimerGTK.__init__T   s   ø€ ØˆŒÜ‰Ò˜$Ð) &Ó)r   c                 ó„   • U R                  5         [        R                  " U R                  U R                  5      U l        g r    )Ú_timer_stopr   Útimeout_addÚ	_intervalÚ	_on_timerrJ   ©rM   s    r   Ú_timer_startÚTimerGTK._timer_startX   s,   € ð 	×ÑÔÜ×&Ò& t§~¡~°t·~±~ÓFˆ�r   c                 ón   • U R                   b(  [        R                  " U R                   5        S U l         g g r    )rJ   r   Úsource_removerU   s    r   rQ   ÚTimerGTK._timer_stop^   s*   € Ø�;‰;Ñ"Ü×Ò˜tŸ{™{Ô+ØˆD�Kð #r   c                 ó`   • U R                   b!  U R                  5         U R                  5         g g r    )rJ   rQ   rV   rU   s    r   Ú_timer_set_intervalÚTimerGTK._timer_set_intervalc   s)   € à�;‰;Ñ"Ø×ÑÔØ×ÑÕð #r   c                 óv   >• [         TU ]  5         U R                  (       a  U R                  (       d  gS U l        g)NTF)rK   rT   Ú	callbacksÚ_singlerJ   )rM   rN   s    €r   rT   ÚTimerGTK._on_timeri   s*   ø€ Ü‰ÑÔð �>�> $§,§,ØàˆDŒKØr   )rJ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rL   rV   rQ   r\   rT   Ú__static_attributes__Ú__classcell__©rN   s   @r   rG   rG   Q   s%   ø† Ù:õ*òGòò
 ÷	ó 	r   rG   c                   ó   • \ rS rSr\rSrg)Ú_FigureCanvasGTKéu   r!   N)rb   rc   rd   re   rG   Ú
_timer_clsrg   r!   r   r   rk   rk   u   s   † ØƒJr   rk   c                   óf   ^ • \ rS rSrSrU 4S jrU 4S jr\S 5       rS r	S r
S rS	 rS
 rSrU =r$ )Ú_FigureManagerGTKéy   a  
Attributes
----------
canvas : `FigureCanvas`
    The FigureCanvas instance
num : int or str
    The Figure number
toolbar : Gtk.Toolbar or Gtk.Box
    The toolbar
vbox : Gtk.VBox
    The Gtk.VBox containing the canvas and toolbar
window : Gtk.Window
    The Gtk.Window
c                 ó‚  >^ • [         R                  " 5       =T l        n[        5       n[         R                  " 5       T l        UR                  T R
                  5        [        TT ]!  X5        US:X  aS  [        R                  S:X  a  SOSnT R
                  R                  [        [        R                  " SU 35      5      5        [         R                  " 5       T l        T R                   R#                  S[         R$                  R&                  5        US:X  a‚  T R
                  R)                  T R                   5        T R                   R+                  5         T R,                  R+                  5         T R                   R/                  T R,                  SSS5        OPUS	:X  aJ  T R
                  R1                  T R                   5        T R                   R3                  T R,                  5        T R,                  R5                  5       u  pgT R6                  bÛ  US:X  aC  T R6                  R+                  5         T R                   R9                  T R6                  S
S
S5        OhUS	:X  ab  [         R:                  " [         R<                  R>                  S9nUR1                  T R6                  5        T R                   RA                  U5        T R6                  RC                  5       u  pšXzRD                  -  nT R
                  RG                  Xg5        S
T l$        T R
                  RK                  SU 4S j5        T R
                  RK                  SSS.U   U 4S j5        [L        RN                  " 5       (       a4  T R
                  R+                  5         T R,                  RQ                  5         T R,                  RS                  5         g )Né   Úwin32ÚpngÚsvgzimages/matplotlib.ÚorientationTr   é   F)Úvscrollbar_policyÚdestroyc                  ó0   >• [         R                  " T5      $ r    ©r   ry   ©r"   rM   s    €r   r$   Ú,_FigureManagerGTK.__init__.<locals>.<lambda>³   s   ø€ ´S·[²[ÀÔ5Fr   Údelete_eventzclose-request©rr   rw   c                  ó0   >• [         R                  " T5      $ r    r{   r|   s    €r   r$   r}   µ   s   ø€ ¬#¯+ª+°dÔ*;r   )*r   Úget_major_versionÚ_gtk_verr4   ÚWindowÚwindowÚ
add_windowrK   rL   ÚsysÚplatformÚset_icon_from_fileÚstrr   Ú_get_data_pathÚBoxÚvboxÚset_propertyÚOrientationÚVERTICALÚaddÚshowÚcanvasÚ
pack_startÚ	set_childÚprependÚget_width_heightÚtoolbarÚpack_endÚScrolledWindowÚ
PolicyTypeÚNEVERÚappendÚget_preferred_sizeÚheightÚset_default_sizeÚ_destroyingr1   r*   Úis_interactiveÚ	draw_idleÚ
grab_focus)rM   r’   ÚnumÚgtk_verr   Úicon_extÚwÚhÚswÚmin_sizeÚnat_sizerN   s   `          €r   rL   Ú_FigureManagerGTK.__init__‰   sŒ  ù€ Ü"%×"7Ò"7Ó"9Ð9ˆŒ˜ä!Ó#ˆÜ—j’j“lˆŒØ�‰�t—{‘{Ô#Ü‰Ñ˜Ô%à�a‹<Ü #§¡°Ó 7‘u¸UˆHØ�K‰K×*Ñ*Ü”E×(Ò(Ð+=¸h¸ZÐ)HÓIÓJôLô —G’G“IˆŒ	Ø�	‰	×Ñ˜}¬c¯o©o×.FÑ.FÔGà�a‹<Ø�K‰K�O‰O˜DŸI™IÔ&Ø�I‰I�N‰NÔØ�K‰K×ÑÔØ�I‰I× Ñ  §¡¨d°D¸!Õ<Ø˜‹\Ø�K‰K×!Ñ! $§)¡)Ô,Ø�I‰I×Ñ˜dŸk™kÔ*ð �{‰{×+Ñ+Ó-‰ˆà�<‰<Ñ#Ø˜!‹|Ø—‘×!Ñ!Ô#Ø—	‘	×"Ñ" 4§<¡<°¸¸qÕAØ˜A“Ü×'Ò'¼#¿.¹.×:NÑ:NÑO�Ø—‘˜TŸ\™\Ô*Ø—	‘	× Ñ  Ô$Ø!%§¡×!@Ñ!@Ó!BÑˆHØ—‘Ñ ˆAà�‰×$Ñ$ QÔ*à ˆÔØ�‰×Ñ˜IÔ'FÔGØ�‰×Ñ °?ÑCÀGÑLÜ;ô	=ä×Ò×ÑØ�K‰K×ÑÔØ�K‰K×!Ñ!Ô#à�‰×ÑÕ r   c                 ó¼   >• U R                   (       a  g SU l         U R                  R                  5         U R                  R                  5         [        TU ]	  5         g r   )r    r„   ry   r’   rK   ©rM   r"   rN   s     €r   ry   Ú_FigureManagerGTK.destroy¼   sC   ø€ Ø××ð
 ØˆÔØ�‰×ÑÔØ�‰×ÑÔÜ‰‰Õr   c                 ó&  • [         c  g  [         R                  5          S q g ! [         a]    [        R                  R                  5       nUR                  5       (       a(  UR                  S5        UR                  5       (       a  M(  e f = f! S q f = fr   )r   ÚrunÚKeyboardInterruptr   ÚMainContextr8   ÚpendingÚ	iteration)ÚclsÚcontexts     r   Ústart_main_loopÚ!_FigureManagerGTK.start_main_loopÈ   s�   € ô ÑØð	 Ü×ÑÕð  ‰Løô !ó 	ô ×&Ñ&×.Ñ.Ó0ˆGØ—/‘/×#Ñ#Ø×!Ñ! $Ô'ð —/‘/×#Ó#àð	ûð  ‰Lús   Š" ¢A#B	ÂB	Â	B ÂBc                 ód  • U R                   R                  5         U R                  R                  5         [        R
                  S   (       ad  SSS.U R                     n[        U R                   U5      " 5       (       a  U R                   R                  5         g [        R                  " S5        g g )Nzfigure.raise_windowÚ
get_windowÚget_surfacer   z#Cannot raise window yet to be setup)r„   r‘   r’   Údrawr*   ÚrcParamsr‚   r)   Úpresentr   Úwarn_external)rM   Ú	meth_names     r   r‘   Ú_FigureManagerGTK.showÛ   s|   € à�‰×ÑÔØ�‰×ÑÔÜ�<‰<Ð-×.Ø(¨]Ñ;¸D¿M¹MÑJˆIÜ�t—{‘{ IÔ.×0Ñ0Ø—‘×#Ñ#Õ%ô ×"Ò"Ð#HÕIð /r   c                 óÄ   • S S S.U R                      nU" U R                  5      (       a  U R                  R                  5         g U R                  R                  5         g )Nc                 ót   • U R                  5       R                  5       [        R                  R                  -  $ r    )r»   Ú	get_stater   ÚWindowStateÚ
FULLSCREEN©r§   s    r   r$   Ú6_FigureManagerGTK.full_screen_toggle.<locals>.<lambda>ì   s%   € ˜!Ÿ,™,›.×2Ñ2Ó4ÜŸO™O×6Ñ6ò7r   c                 ó"   • U R                  5       $ r    )Úis_fullscreenrÈ   s    r   r$   rÉ   î   s   € ˜Ÿ™Ô*r   r   )r‚   r„   ÚunfullscreenÚ
fullscreen)rM   rË   s     r   Úfull_screen_toggleÚ$_FigureManagerGTK.full_screen_toggleê   sP   € ñ8á*ñ
ð �-‰-ñ	ˆñ
 ˜Ÿ™×%Ñ%Ø�K‰K×$Ñ$Õ&à�K‰K×"Ñ"Õ$r   c                 ó6   • U R                   R                  5       $ r    )r„   Ú	get_titlerU   s    r   Úget_window_titleÚ"_FigureManagerGTK.get_window_titleõ   s   € Ø�{‰{×$Ñ$Ó&Ð&r   c                 ó:   • U R                   R                  U5        g r    )r„   Ú	set_title)rM   Útitles     r   Úset_window_titleÚ"_FigureManagerGTK.set_window_titleø   s   € Ø�‰×Ñ˜eÕ$r   c                 ó  • [        XR                  R                  -  5      n[        X R                  R                  -  5      nU R                  (       a*  U R                  R	                  5       u  p4X$R
                  -  nU R                  R                  5       nU R                  S:¼  d$  UR                  UR
                  s=:X  a  S:X  a  O  OU R                  R                  X5        g U R                  R                  X5        g )Nrw   é   )Úintr’   Údevice_pixel_ratior—   r�   rž   Úget_allocationr‚   Úwidthr„   rŸ   Úresize)rM   rÞ   rž   rª   r«   Úcanvas_sizes         r   rß   Ú_FigureManagerGTK.resizeû   s´   € Ü�EŸK™K×:Ñ:Ñ:Ó;ˆÜ�VŸk™k×<Ñ<Ñ<Ó=ˆØ�<�<Ø!%§¡×!@Ñ!@Ó!BÑˆHØ—o‘oÑ%ˆFØ—k‘k×0Ñ0Ó2ˆØ�=‰=˜AÓ ×!2Ñ!2°k×6HÑ6HÕ!MÈAÖ!Mð
 �K‰K×(Ñ(¨Õ7à�K‰K×Ñ˜uÕ-r   )r    r‚   rŒ   r„   )rb   rc   rd   re   rf   rL   ry   Úclassmethodr¸   r‘   rÎ   rÒ   r×   rß   rg   rh   ri   s   @r   ro   ro   y   sF   ø† ñõ1!õf
ð ñ ó ð ò$Jò	%ò'ò%÷.ð .r   ro   c                   óR   ^ • \ rS rSrS rS rS rS rU 4S jrU 4S jr	S r
S	rU =r$ )
Ú_NavigationToolbar2GTKi  c                 ón   • [         R                  " U5      nU R                  R                  SU S35        g )Nz<small>z</small>)r   Úmarkup_escape_textÚmessageÚ
set_markup)rM   ÚsÚescapeds      r   Úset_messageÚ"_NavigationToolbar2GTK.set_message  s-   € Ü×)Ò)¨!Ó,ˆØ�‰×Ñ '¨'¨°(Ð ;Õ<r   c                 óÐ   • U R                   R                  SS9S   nXe-
  nXc-
  nX#XB-
  XS-
  4 Vs/ s H  n[        U5      PM     nnU R                   R                  U5        g s  snf )NT)ÚphysicalrÚ   )r’   r–   rÛ   Ú_draw_rubberband)	rM   ÚeventÚx0Úy0Úx1Úy1rž   ÚvalÚrects	            r   Údraw_rubberbandÚ&_NavigationToolbar2GTK.draw_rubberband  si   € Ø—‘×-Ñ-°tÐ-Ð<¸QÑ?ˆØ‰[ˆØ‰[ˆØ%'¨R©W°b±gÑ$>Ó?Ò$>˜S”�C–Ñ$>ˆÐ?Ø�‰×$Ñ$ TÕ*ùò @s   °A#c                 ó:   • U R                   R                  S 5        g r    )r’   rï   rU   s    r   Úremove_rubberbandÚ(_NavigationToolbar2GTK.remove_rubberband  s   € Ø�‰×$Ñ$ TÕ*r   c                 ó  • S Hu  u  pU R                   R                  U5      nU(       d  M)  UR                  UR                  5         UR	                  U R
                  R                  U:H  5        S S S 5        Mw     g ! , (       d  f       M‰  = f)N))ÚPanÚPAN)ÚZoomÚZOOM)Ú_gtk_idsÚgetÚhandler_blockÚ_signal_handlerÚ
set_activeÚmodeÚname)rM   r  ÚactiveÚbuttons       r   Ú_update_buttons_checkedÚ._NavigationToolbar2GTK._update_buttons_checked  si   € Û>‰LˆDØ—]‘]×&Ñ& tÓ,ˆFßˆvØ×)Ñ)¨&×*@Ñ*@ÕAØ×%Ñ% d§i¡i§n¡n¸Ñ&>Ô?÷ BÑAò ?÷ BÖAús   Á)A=Á=
B	c                 ó@   >• [         TU ]  " U6   U R                  5         g r    )rK   Úpanr
  r®   s     €r   r  Ú_NavigationToolbar2GTK.pan&  s   ø€ Ü‰Š�TÑØ×$Ñ$Õ&r   c                 ó@   >• [         TU ]  " U6   U R                  5         g r    )rK   Úzoomr
  r®   s     €r   r  Ú_NavigationToolbar2GTK.zoom*  s   ø€ Ü‰Š�dÑØ×$Ñ$Õ&r   c                 óN  • U R                   R                  S:„  nU R                   R                  [        U R                   5      S-
  :  nSU R                  ;   a  U R                  S   R	                  U5        SU R                  ;   a  U R                  S   R	                  U5        g g )Nr   rÚ   ÚBackÚForward)Ú
_nav_stackÚ_posÚlenr  Úset_sensitive)rM   Úcan_backwardÚcan_forwards      r   Úset_history_buttonsÚ*_NavigationToolbar2GTK.set_history_buttons.  sƒ   € Ø—‘×+Ñ+¨aÑ/ˆØ—o‘o×*Ñ*¬S°·±Ó-AÀAÑ-EÑEˆØ�T—]‘]Ó"Ø�M‰M˜&Ñ!×/Ñ/°Ô=Ø˜Ÿ™Ó%Ø�M‰M˜)Ñ$×2Ñ2°;Õ?ð &r   r!   )rb   rc   rd   re   rë   r÷   rú   r
  r  r  r  rg   rh   ri   s   @r   rä   rä     s.   ø† ò
=ò+ò+ò@õ'õ'÷@ð @r   rä   c                   ó    • \ rS rSrS rS rSrg)ÚRubberbandGTKi7  c                 óP   • [         R                  U R                  5       S XX45        g r    )rä   r÷   Ú"_make_classic_style_pseudo_toolbar)rM   rñ   rò   ró   rô   s        r   r÷   ÚRubberbandGTK.draw_rubberband8  s#   € Ü×.Ñ.Ø×3Ñ3Ó5°t¸RÀRõ	Mr   c                 óJ   • [         R                  U R                  5       5        g r    )rä   rú   r   rU   s    r   rú   ÚRubberbandGTK.remove_rubberband<  s   € Ü×0Ñ0Ø×3Ñ3Ó5õ	7r   r!   N)rb   rc   rd   re   r÷   rú   rg   r!   r   r   r  r  7  s   † òMõ7r   r  c                   ó   • \ rS rSrS rSrg)ÚConfigureSubplotsGTKiA  c                 ó0   • [         R                  U S 5        g r    )rä   Úconfigure_subplots)rM   r"   s     r   ÚtriggerÚConfigureSubplotsGTK.triggerB  s   € Ü×1Ñ1°$¸Õ=r   r!   N)rb   rc   rd   re   r(  rg   r!   r   r   r%  r%  A  s   † õ>r   r%  c                   ó¬   • \ rS rSrSR	                  \R                  " 5       \R                  " 5       \R                  " 5       5      r	\
R                  rSrg)Ú_BackendGTKiF  z{}.{}.{}r!   N)rb   rc   rd   re   Úformatr   r�   Úget_minor_versionÚget_micro_versionÚbackend_versionro   r¸   Úmainlooprg   r!   r   r   r+  r+  F  sC   † Ø ×'Ñ'Ø×ÒÓØ×ÒÓØ×ÒÓó€Oð
 !×0Ñ0ƒHr   r+  )+rf   Úloggingr†   Ú
matplotlibr*   r   r   r   Úmatplotlib._pylab_helpersr   Úmatplotlib.backend_basesr   r   r	   r
   r   Úmatplotlib.backend_toolsr   ÚgiÚgi.repositoryr   r   r   r   Úrequire_foreignÚImportErrorÚeÚ	getLoggerrb   Ú_logr   r   r4   rE   rG   rk   ro   rä   ÚRubberbandBaser  ÚConfigureSubplotsBaser%  r+  r!   r   r   Ú<module>r?     sÿ   ðñó Û 
ã ß 1Ñ 1Ý )÷õ õ -ã 	÷ .Ó -ðAØ×Ò�wÔð ×Ò˜Ó"€Ø€òòò0	ô!ˆyô !ôHÐ'ô ôP.Ð)ô P.ôf(@Ð/ô (@ôV7�M×0Ñ0ô 7ô>˜=×>Ñ>ô >ô
1�(õ 1øð]	 ó AÙ
Ð8Ó
9¸qÐ@ûðAús   ÁC ÃC)Ã	C$Ã$C)