Ë
    ¨eh
,  ã                   óÖ  — d 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 ddlmZ ddlZddlmZmZmZmZ 	  ej0                  d«        ej6                  e«      Zdad
„ Zd„ Z d„ Z! G d„ de«      Z" G d„ de«      Z# G d„ de«      Z$ G d„ de«      Z% G d„ dejL                  «      Z' G d„ dejP                  «      Z) G d„ de«      Z*y# e$ rZ ed	«      e‚dZ[ww xY w)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                 ó`   — | j                  «       D ]  }|j                  «        Œ d| _        d ay ©NT)Úget_windowsÚcloseÚ_created_by_matplotlibÚ_application)ÚappÚwins     ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/backends/_backend_gtk.pyÚ_shutdown_applicationr      s2   € ð �‰Ó ò ˆØ�	‰	�ðð "&€CÔà�Ló    c                  óø  — t         €ït        j                  j                  «       } | �t	        | dd«      rÀt
        j                  j                  «       st        d«      ‚t        j                  j                  dt        j                  j                  «      a t         j                  dd„ «       t         j                  dt        «       t         j                  «        t!        j"                  «        t         S | a t         S )Nr   FzInvalid DISPLAY variablezorg.matplotlib.Matplotlib3Úactivatec                   ó   — y ©N© )ÚargsÚkwargss     r   ú<lambda>z%_create_application.<locals>.<lambda>;   s   � r   Ú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_applicationr3   -   sÅ   € ô ÐÜ�o‰o×)Ñ)Ó+ˆØˆ;œ' #Ð'?ÀÔGô ×(Ñ(×9Ñ9Ô;Ü"Ð#=Ó>Ð>ÜŸ?™?×.Ñ.Ð/KÜ/2×/CÑ/C×/NÑ/NóPˆLô × Ñ  Ñ-IÔJÜ× Ñ  Ô-BÔCÜ×!Ñ!Ô#Ü×#Ñ#Ô%ô Ðð ˆLäÐr   c                 ó  — t        j                  t        j                  dt        j                  dt        j
                  dt        j                  dt        j                  dt        j                  dt        j                  di| ¬«      S )	NÚmoveÚpointerÚdefaultÚ	crosshairÚwaitz	ew-resizez	ns-resize)Úcursor)
r   Úcheck_getitemr   ÚMOVEÚHANDÚPOINTERÚSELECT_REGIONÚWAITÚRESIZE_HORIZONTALÚRESIZE_VERTICAL)Ú
mpl_cursors    r   Úmpl_to_gtk_cursor_namerD   E   sd   € Ü×ÑÜ�‰�fÜ�‰�iÜ�‰˜Ü×Ñ˜{Ü�‰�fÜ×!Ñ! ;Ü×Ñ ðð ôð r   c                   ó>   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zˆ fd„Zˆ xZ	S )ÚTimerGTKz0Subclass of `.TimerBase` using GTK timer events.c                 ó2   •— d | _         t        ‰| �  |i |¤Ž y r    )Ú_timerÚsuperÚ__init__)Úselfr"   r#   Ú	__class__s      €r   rJ   zTimerGTK.__init__T   s   ø€ ØˆŒÜ‰Ñ˜$Ð) &Ó)r   c                 ó‚   — | j                  «        t        j                  | j                  | j                  «      | _        y r    )Ú_timer_stopr   Útimeout_addÚ	_intervalÚ	_on_timerrH   ©rK   s    r   Ú_timer_startzTimerGTK._timer_startX   s,   € ð 	×ÑÔÜ×&Ñ& t§~¡~°t·~±~ÓFˆ�r   c                 ój   — | j                   �'t        j                  | j                   «       d | _         y y r    )rH   r   Úsource_removerR   s    r   rN   zTimerGTK._timer_stop^   s*   € Ø�;‰;Ð"Ü×Ñ˜tŸ{™{Ô+ØˆD�Kð #r   c                 ó^   — | j                   �!| j                  «        | j                  «        y y r    )rH   rN   rS   rR   s    r   Ú_timer_set_intervalzTimerGTK._timer_set_intervalc   s)   € à�;‰;Ð"Ø×ÑÔØ×ÑÕð #r   c                 ób   •— t         ‰| �  «        | j                  r| j                  syd | _        y)NTF)rI   rQ   Ú	callbacksÚ_singlerH   )rK   rL   s    €r   rQ   zTimerGTK._on_timeri   s*   ø€ Ü‰ÑÔð �>Š> $§,¢,ØàˆDŒKØr   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   rS   rN   rW   rQ   Ú__classcell__©rL   s   @r   rF   rF   Q   s%   ø„ Ù:ô*òGòò
 ÷	ð 	r   rF   c                   ó   — e Zd ZeZy)Ú_FigureCanvasGTKN)r[   r\   r]   rF   Ú
_timer_clsr!   r   r   rb   rb   u   s   „ Ø�Jr   rb   c                   óV   ‡ — e Zd ZdZˆ fd„Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zˆ xZS )
Ú_FigureManagerGTKaC  
    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                 ój  •‡ — t        j                  «       x‰ _        }t        «       }t        j                  «       ‰ _        |j                  ‰ j
                  «       t        ‰‰ �!  ||«       |dk(  rQt        j                  dk(  rdnd}‰ j
                  j                  t        t        j                  d|› �«      «      «       t        j                  «       ‰ _        ‰ j                   j#                  dt         j$                  j&                  «       |dk(  r‚‰ j
                  j)                  ‰ j                   «       ‰ j                   j+                  «        ‰ j,                  j+                  «        ‰ j                   j/                  ‰ j,                  ddd«       nO|d	k(  rJ‰ j
                  j1                  ‰ j                   «       ‰ j                   j3                  ‰ j,                  «       ‰ j,                  j5                  «       \  }}‰ j6                  �Ý|dk(  rC‰ j6                  j+                  «        ‰ j                   j9                  ‰ j6                  d
d
d«       ni|d	k(  rdt        j:                  t         j<                  j>                  ¬«      }|j1                  ‰ j6                  «       ‰ j                   jA                  |«       ‰ j6                  jC                  «       \  }	}
||
jD                  z  }‰ j
                  jG                  ||«       d
‰ _$        ‰ j
                  jK                  dˆ fd„«       ‰ j
                  jK                  dddœ|   ˆ fd„«       tM        jN                  «       r4‰ j
                  j+                  «        ‰ j,                  jQ                  «        ‰ j,                  jS                  «        y )Né   Úwin32ÚpngÚsvgzimages/matplotlib.ÚorientationTr   é   F)Úvscrollbar_policyÚdestroyc                  ó.   •— t        j                  ‰«      S r    ©r   rn   ©r"   rK   s    €r   r$   z,_FigureManagerGTK.__init__.<locals>.<lambda>³   s   ø€ ´S·[±[ÀÓ5F€ r   Údelete_eventzclose-request©rg   rl   c                  ó.   •— t        j                  ‰«      S r    rp   rq   s    €r   r$   z,_FigureManagerGTK.__init__.<locals>.<lambda>µ   s   ø€ ¬#¯+©+°dÓ*;€ r   )*r   Úget_major_versionÚ_gtk_verr3   ÚWindowÚwindowÚ
add_windowrI   rJ   Ú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Ú_destroyingr0   r)   Úis_interactiveÚ	draw_idleÚ
grab_focus)rK   r†   ÚnumÚgtk_verr   Úicon_extÚwÚhÚswÚmin_sizeÚnat_sizerL   s   `          €r   rJ   z_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Ô*ð �{‰{×+Ñ+Ó-‰ˆˆ1à�<‰<Ð#Ø˜!Š|Ø—‘×!Ñ!Ô#Ø—	‘	×"Ñ" 4§<¡<°¸¸qÕAØ˜A’Ü×'Ñ'¼#¿.¹.×:NÑ:NÔO�Ø—‘˜TŸ\™\Ô*Ø—	‘	× Ñ  Ô$Ø!%§¡×!@Ñ!@Ó!BÑˆH�hØ�—‘Ñ ˆAà�‰×$Ñ$ Q¨Ô*à ˆÔØ�‰×Ñ˜IÓ'FÔGØ�‰×Ñ °?ÑCÀGÑLÛ;ô	=ä×ÑÔØ�K‰K×ÑÔØ�K‰K×!Ñ!Ô#à�‰×ÑÕ r   c                 ó”   — | j                   ry d| _         | j                  j                  «        | j                  j                  «        y r   )r”   rx   rn   r†   ©rK   r"   s     r   rn   z_FigureManagerGTK.destroy¼   s8   € Ø×Òð
 ØˆÔØ�‰×ÑÔØ�‰×ÑÕr   c                 ó
  — t         €y 	 t         j                  «        d a y # t        $ rR t        j                  j                  «       }|j                  «       r"|j                  d«       |j                  «       rŒ"‚ w xY w# d a w xY wr   )r   ÚrunÚKeyboardInterruptr   ÚMainContextr7   ÚpendingÚ	iteration)ÚclsÚcontexts     r   Ústart_main_loopz!_FigureManagerGTK.start_main_loopÇ   s{   € ô ÐØð	 Ü×ÑÔð  ‰Løô !ò 	ô ×&Ñ&×.Ñ.Ó0ˆGØ—/‘/Ô#Ø×!Ñ! $Ô'ð —/‘/Õ#àð	ûð  ‰Lús   ‰   AA;Á9A;Á;A> Á>Bc                 óN  — | j                   j                  «        | j                  j                  «        t        j
                  d   r^dddœ| j                     } t        | j                   |«      «       r| j                   j                  «        y t        j                  d«       y y )Nzfigure.raise_windowÚ
get_windowÚget_surfacers   z#Cannot raise window yet to be setup)rx   r…   r†   Údrawr)   ÚrcParamsrv   r(   Úpresentr   Úwarn_external)rK   Ú	meth_names     r   r…   z_FigureManagerGTK.showÚ   s{   € à�‰×ÑÔØ�‰×ÑÔÜ�<‰<Ð-Ò.Ø(¨]Ñ;¸D¿M¹MÑJˆIØ.Œw�t—{‘{ IÓ.Ô0Ø—‘×#Ñ#Õ%ô ×"Ñ"Ð#HÕIð /r   c                 óº   — d„ d„ dœ| j                      } || j                  «      r| j                  j                  «        y | j                  j                  «        y )Nc                 ót   — | j                  «       j                  «       t        j                  j                  z  S r    )r¬   Ú	get_stater   ÚWindowStateÚ
FULLSCREEN©r›   s    r   r$   z6_FigureManagerGTK.full_screen_toggle.<locals>.<lambda>ë   s'   € ˜!Ÿ,™,›.×2Ñ2Ó4ÜŸO™O×6Ñ6ñ7€ r   c                 ó"   — | j                  «       S r    )Úis_fullscreenr¸   s    r   r$   z6_FigureManagerGTK.full_screen_toggle.<locals>.<lambda>í   s   € ˜Ÿ™Ó*€ r   rs   )rv   rx   ÚunfullscreenÚ
fullscreen)rK   rº   s     r   Úfull_screen_togglez$_FigureManagerGTK.full_screen_toggleé   sM   € ñ8á*ñ
ð �-‰-ñ	ˆñ
 ˜Ÿ™Ô%Ø�K‰K×$Ñ$Õ&à�K‰K×"Ñ"Õ$r   c                 ó6   — | j                   j                  «       S r    )rx   Ú	get_titlerR   s    r   Úget_window_titlez"_FigureManagerGTK.get_window_titleô   s   € Ø�{‰{×$Ñ$Ó&Ð&r   c                 ó:   — | j                   j                  |«       y r    )rx   Ú	set_title)rK   Útitles     r   Úset_window_titlez"_FigureManagerGTK.set_window_title÷   s   € Ø�‰×Ñ˜eÕ$r   c                 ó  — t        || j                  j                  z  «      }t        || j                  j                  z  «      }| j                  r,| j                  j	                  «       \  }}||j
                  z  }| j                  j                  «       }| j                  dk\  s"|j                  |j
                  cxk(  rdk(  r n n| j                  j                  ||«       y | j                  j                  ||«       y )Nrl   é   )Úintr†   Údevice_pixel_ratior‹   r‘   r’   Úget_allocationrv   Úwidthrx   r“   Úresize)rK   rÊ   r’   rž   rŸ   Úcanvas_sizes         r   rË   z_FigureManagerGTK.resizeú   sÀ   € Ü�E˜DŸK™K×:Ñ:Ñ:Ó;ˆÜ�V˜dŸk™k×<Ñ<Ñ<Ó=ˆØ�<Š<Ø!%§¡×!@Ñ!@Ó!BÑˆH�hØ�h—o‘oÑ%ˆFØ—k‘k×0Ñ0Ó2ˆØ�=‰=˜AÒ ×!2Ñ!2°k×6HÑ6HÔ!MÈAÕ!Mð
 �K‰K×(Ñ(¨°Õ7à�K‰K×Ñ˜u fÕ-r   )r[   r\   r]   r^   rJ   rn   Úclassmethodrª   r…   r½   rÀ   rÄ   rË   r_   r`   s   @r   re   re   y   sA   ø„ ñô1!òf	ð ñ ó ð ò$Jò	%ò'ò%ö.r   re   c                   óF   ‡ — e Zd Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zˆ fd„Zd„ Z	ˆ xZ
S )Ú_NavigationToolbar2GTKc                 ól   — t        j                  |«      }| j                  j                  d|› d�«       y )Nz<small>z</small>)r   Úmarkup_escape_textÚmessageÚ
set_markup)rK   ÚsÚescapeds      r   Úset_messagez"_NavigationToolbar2GTK.set_message  s-   € Ü×)Ñ)¨!Ó,ˆØ�‰×Ñ '¨'¨°(Ð ;Õ<r   c                 óð   — | j                   j                  j                  j                  }||z
  }||z
  }||||z
  ||z
  fD �cg c]  }t	        |«      ‘Œ }}| j                   j                  |«       y c c}w r    )r†   ÚfigureÚbboxr’   rÇ   Ú_draw_rubberband)	rK   ÚeventÚx0Úy0Úx1Úy1r’   ÚvalÚrects	            r   Údraw_rubberbandz&_NavigationToolbar2GTK.draw_rubberband  so   € Ø—‘×#Ñ#×(Ñ(×/Ñ/ˆØ�b‰[ˆØ�b‰[ˆØ%'¨¨R°"©W°b¸2±gÐ$>Ö?˜S”�C•Ð?ˆÐ?Ø�‰×$Ñ$ TÕ*ùò @s   ÁA3c                 ó:   — | j                   j                  d «       y r    )r†   rÚ   rR   s    r   Úremove_rubberbandz(_NavigationToolbar2GTK.remove_rubberband  s   € Ø�‰×$Ñ$ TÕ*r   c                 ó  — dD ]o  \  }}| j                   j                  |«      }|sŒ$|j                  |j                  «      5  |j	                  | j
                  j                  |k(  «       d d d «       Œq y # 1 sw Y   Œ|xY w)N))ÚPanÚPAN)ÚZoomÚZOOM)Ú_gtk_idsÚgetÚhandler_blockÚ_signal_handlerÚ
set_activeÚmodeÚname)rK   rð   ÚactiveÚbuttons       r   Ú_update_buttons_checkedz._NavigationToolbar2GTK._update_buttons_checked  s|   € Ø>ò 	@‰LˆD�&Ø—]‘]×&Ñ& tÓ,ˆFÚØ×)Ñ)¨&×*@Ñ*@ÓAñ @Ø×%Ñ% d§i¡i§n¡n¸Ñ&>Ô?÷@ð @ñ	@÷@ð @ús   Á)A6Á6A?	c                 ó>   •— t        ‰| �  |Ž  | j                  «        y r    )rI   Úpanró   ©rK   r"   rL   s     €r   rõ   z_NavigationToolbar2GTK.pan%  s   ø€ Ü‰‰�TÑØ×$Ñ$Õ&r   c                 ó>   •— t        ‰| �  |Ž  | j                  «        y r    )rI   Úzoomró   rö   s     €r   rø   z_NavigationToolbar2GTK.zoom)  s   ø€ Ü‰‰�dÑØ×$Ñ$Õ&r   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Æ   ÚBackÚForward)Ú
_nav_stackÚ_posÚlenrê   Úset_sensitive)rK   Úcan_backwardÚcan_forwards      r   Úset_history_buttonsz*_NavigationToolbar2GTK.set_history_buttons-  sƒ   € Ø—‘×+Ñ+¨aÑ/ˆØ—o‘o×*Ñ*¬S°·±Ó-AÀAÑ-EÑEˆØ�T—]‘]Ñ"Ø�M‰M˜&Ñ!×/Ñ/°Ô=Ø˜Ÿ™Ñ%Ø�M‰M˜)Ñ$×2Ñ2°;Õ?ð &r   )r[   r\   r]   rÖ   râ   rä   ró   rõ   rø   r  r_   r`   s   @r   rÏ   rÏ     s(   ø„ ò
=ò+ò+ò@ô'ô'ö@r   rÏ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚRubberbandGTKc                 óT   — t         j                  | j                  «       d ||||«       y r    )rÏ   râ   Ú"_make_classic_style_pseudo_toolbar)rK   rÜ   rÝ   rÞ   rß   s        r   râ   zRubberbandGTK.draw_rubberband7  s'   € Ü×.Ñ.Ø×3Ñ3Ó5°t¸RÀÀRÈõ	Mr   c                 óJ   — t         j                  | j                  «       «       y r    )rÏ   rä   r  rR   s    r   rä   zRubberbandGTK.remove_rubberband;  s   € Ü×0Ñ0Ø×3Ñ3Ó5õ	7r   N)r[   r\   r]   râ   rä   r!   r   r   r  r  6  s   „ òMó7r   r  c                   ó   — e Zd Zd„ Zy)ÚConfigureSubplotsGTKc                 ó0   — t         j                  | d «       y r    )rÏ   Úconfigure_subplotsr¡   s     r   ÚtriggerzConfigureSubplotsGTK.triggerA  s   € Ü×1Ñ1°$¸Õ=r   N)r[   r\   r]   r  r!   r   r   r	  r	  @  s   „ ó>r   r	  c                   ó¤   — e Zd Zdj                   ej
                  «        ej                  «        ej                  «       «      Ze	j                  Zy)Ú_BackendGTKz{}.{}.{}N)r[   r\   r]   Úformatr   ru   Úget_minor_versionÚget_micro_versionÚbackend_versionre   rª   Úmainloopr!   r   r   r  r  E  sI   „ Ø ×'Ñ'Øˆ×ÑÓØˆ×ÑÓØˆ×ÑÓó€Oð
 !×0Ñ0�Hr   r  )+r^   Úloggingrz   Ú
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Ú	getLoggerr[   Ú_logr   r   r3   rD   rF   rb   re   rÏ   ÚRubberbandBaser  ÚConfigureSubplotsBaser	  r  r!   r   r   ú<module>r"     s  ðñó Û 
ã ß 1Ñ 1Ý )÷õ õ -ã 	÷ .Ó -ðAØ€B×Ñ�wÔð €w×Ñ˜Ó"€Ø€òòò0	ô!ˆyô !ôHÐ'ô ôO.Ð)ô O.ôd(@Ð/ô (@ôV7�M×0Ñ0ô 7ô>˜=×>Ñ>ô >ô
1�(õ 1øð[	 ò AÙ
Ð8Ó
9¸qÐ@ûðAús   ÁC ÃC(Ã	C#Ã#C(