
    h
,                        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     R/var/www/html/env/lib/python3.13/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     oo))+;'#'?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   check_getitemr   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$ )	TimerGTKQ   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{{+DK #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*     >>$,,DK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)_FigureCanvasGTKu   r!   N)rb   rc   rd   re   rG   
_timer_clsrg   r!   r   r   rk   rk   u   s    Jr   rk   c                   `   ^  \ rS rSrSrU 4S jrS r\S 5       rS r	S r
S rS	 rS
 rSrU =r$ )_FigureManagerGTKy   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  pXzRD                  -  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!#jjlt{{#%a< # 7uUHKK**E((+=hZ)HIJL GGI			}coo.F.FGa<KKOODII&IINNKKII  dD!<\KK!!$)),IIdkk* {{++-<<#!|!!#		""4<<qAA''#..:N:NOT\\*		  $!%!@!@!BH A$$Q* I'FG?CGL;	=KKKK!!# r   c                     U R                   (       a  g SU l         U R                  R                  5         U R                  R                  5         g r   )r   r   ry   r   rM   r"   s     r   ry   _FigureManagerGTK.destroy   s8    
 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 ! 	 &&..0G//##!!$' //##	  Ls   " 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|    <<-.(];DMMJI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OO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*
 --	
 %%KK$$&KK""$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    EKK:::;Vkk<<<=<<!%!@!@!BHoo%Fkk002==A!2!2k6H6H!MA!M
 KK((7KK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                  R                  R                  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 r    )r   figurebboxr   r   _draw_rubberband)	rM   eventx0y0x1y1r   valrects	            r   draw_rubberband&_NavigationToolbar2GTK.draw_rubberband  sh    ##((//[[%'RWbg$>?$>SC$>?$$T* @s   A1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    >LD]]&&t,Fv))&*@*@A%%diinn&>? BA ? BAs   )A==
B	c                 @   > [         TU ]  " U6   U R                  5         g r    )rK   panr  rM   r"   rN   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/oo**S-AA-EET]]"MM&!//=%MM)$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)RubberbandGTKi6  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_rubberband7  s#    ..335tRR	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   6  s    M7r   r   c                       \ rS rSrS rSrg)ConfigureSubplotsGTKi@  c                 0    [         R                  U S 5        g r    )r   configure_subplotsr   s     r   triggerConfigureSubplotsGTK.triggerA  s    11$=r   r!   N)rb   rc   rd   re   r*  rg   r!   r   r   r'  r'  @  s    >r   r'  c                       \ rS rSrSR	                  \R                  " 5       \R                  " 5       \R                  " 5       5      r	\
R                  rSrg)_BackendGTKiE  z{}.{}.{}r!   N)rb   rc   rd   re   formatr   r   get_minor_versionget_micro_versionbackend_versionro   r   mainlooprg   r!   r   r   r-  r-  E  sC     ''O
 !00Hr   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>rA     s     
  1 1 )  - 	 . -Aw "0	!y !H' O.) O.d(@/ (@V7M00 7>=>> >
1( 1[	  A
8
9q@As   C C)	C$$C)