
    P/Ph
,                        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j        d           n# e$ rZ ed	          edZ[ww xY w ej        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j&                  Z' G d dej(                  Z) G d de          Z*dS )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                 n    |                                  D ]}|                                 d| _        d ad S NT)get_windowsclose_created_by_matplotlib_application)appwins     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/backends/_backend_gtk.py_shutdown_applicationr      s?         		
 "&CLLL    c                     t           t          j                                        } | t	          | dd          rt
          j                                        st          d          t          j        
                    dt          j        j                  a t                               dd            t                               dt                     t                                            t!          j                     n| a t           S )Nr   FzInvalid DISPLAY variablezorg.matplotlib.Matplotlib3activatec                      d S N )argskwargss     r   <lambda>z%_create_application.<locals>.<lambda>;   s    T 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))++;'#'?GG; (99;; ?"#=>>>?../K/2/C/NP PL   -I-IJJJ  -BCC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   sZ    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                 H    d | _          t                      j        |i | d S r    )_timersuper__init__)selfr"   r#   	__class__s      r   rJ   zTimerGTK.__init__T   s,    $)&)))))r   c                 v    |                                   t          j        | j        | j                  | _        d S r    )_timer_stopr   timeout_add	_interval	_on_timerrH   rK   s    r   _timer_startzTimerGTK._timer_startX   s2     	&t~t~FFr   c                 X    | j         "t          j        | j                    d | _         d S d S r    )rH   r   source_removerR   s    r   rN   zTimerGTK._timer_stop^   s0    ;"t{+++DKKK #"r   c                 h    | j         *|                                  |                                  d S d S r    )rH   rN   rS   rR   s    r   _timer_set_intervalzTimerGTK._timer_set_intervalc   s<    ;" #"r   c                 v    t                                                       | j        r	| j        sdS d | _        dS )NTF)rI   rQ   	callbacks_singlerH   )rK   rL   s    r   rQ   zTimerGTK._on_timeri   s?     > 	$, 	4DK5r   )
__name__
__module____qualname____doc__rJ   rS   rN   rW   rQ   __classcell__rL   s   @r   rF   rF   Q   s        ::* * * * *G G G  
     	 	 	 	 	 	 	 	 	r   rF   c                       e Zd ZeZdS )_FigureCanvasGTKN)r[   r\   r]   rF   
_timer_clsr!   r   r   rb   rb   u   s        JJJr   rb   c                   \     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                 
    t          j                    x _        }t                      }t          j                     _        |                     j                   t                                          ||           |dk    rPt          j
        dk    rdnd} j                            t          t          j        d|                                t          j                     _         j                            dt           j        j                   |dk    rt j                             j                    j                                          j                                          j                             j        ddd           nD|d	k    r> j                             j                    j                             j                    j                                        \  }} j        |dk    r< j                                          j                             j        d
d
d           n^|d	k    rXt          j        t           j        j                  }|                     j                    j                             |            j        !                                \  }	}
||
j"        z  } j        #                    ||           d
 _$         j        %                    d fd            j        %                    ddd|          fd           tM          j'                    r2 j                                          j        (                                  j        )                                 d S )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[5F5F 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"9"99!##jllt{###%%%a<< # 7 7uuUHK**E()Hh)H)HIIJJL L L GII		}co.FGGGa<<KOODI&&&INNKI  dD!<<<<\\K!!$),,,Idk*** {++--1<#!||!!###	""4<qAAAAA'#.:NOOOT\***	  $$$!%!@!@!B!BHh A$$Q*** I'F'F'F'FGGG?CCGL;;;;	= 	= 	= 	$KK!!###     r   c                     | j         rd S d| _         | j                                         | j                                         d S r   )r   rx   rn   r   rK   r"   s     r   rn   z_FigureManagerGTK.destroy   sJ     	
 Fr   c                 6   t           d S 	 t                                            nj# t          $ r] t          j                                        }|                                r)|                    d           |                                ) w xY w	 d a d S # d a w xY wr   )r   runKeyboardInterruptr   MainContextr7   pending	iteration)clscontexts     r   start_main_loopz!_FigureManagerGTK.start_main_loop   s     F	   	 	 	 &..00G//## (!!$''' //## (	   LLL4Ls   % B A'BB Bc                 J   | j                                          | j                                         t          j        d         r^ddd| j                 } t          | j         |                      r| j                                          d S t          j
        d           d S d S )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    <-. 		J(];;DMJI.wt{I..00 J##%%%%% "#HIIIII		J 		Jr   c                     d d d| j                  } || j                  r| j                                         d S | j                                         d S )Nc                 r    |                                                                  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4O67 r   c                 *    |                                  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   st    8 8**
 
 -	
 =%% 	%K$$&&&&&K""$$$$$r   c                 4    | j                                         S r    )rx   	get_titlerR   s    r   get_window_titlez"_FigureManagerGTK.get_window_title   s    {$$&&&r   c                 :    | j                             |           d S 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        z  }| j                                        }| j        dk    s|j        |j        cxk    rdk    r n n| j	        
                    ||           d S | j	                            ||           d S )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    EDK::;;Vdk<<==< 	&!%!@!@!B!BHhho%Fk0022=A!2k6H!M!M!M!MA!M!M!M!M!M
 K((77777Kuf-----r   )r[   r\   r]   r^   rJ   rn   classmethodr   r   r   r   r   r   r_   r`   s   @r   re   re   y   s         1! 1! 1! 1! 1!f	 	 	     [ $J J 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                 j    t          j        |          }| j                            d| d           d S )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
  }d ||||z
  ||z
  fD             }| j                             |           d S )Nc                 ,    g | ]}t          |          S r!   )r   ).0vals     r   
<listcomp>z:_NavigationToolbar2GTK.draw_rubberband.<locals>.<listcomp>  s    ???SC???r   )r   figurebboxr   _draw_rubberband)rK   eventx0y0x1y1r   rects           r   draw_rubberbandz&_NavigationToolbar2GTK.draw_rubberband  sd    #(/b[b[??RR"Wb2g$>???$$T*****r   c                 :    | j                             d            d S r    )r   r   rR   s    r   remove_rubberbandz(_NavigationToolbar2GTK.remove_rubberband  s    $$T*****r   c                     dD ]v\  }}| j                             |          }|rU|                    |j                  5  |                    | j        j        |k               d d d            n# 1 swxY w Y   wd S )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    > 	@ 	@LD&]&&t,,F @))&*@AA @ @%%din&>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@s   $A..A2	5A2	c                 \     t                      j        |  |                                  d S r    )rI   panr   rK   r"   rL   s     r   r   z_NavigationToolbar2GTK.pan%  s.    T$$&&&&&r   c                 \     t                      j        |  |                                  d S r    )rI   zoomr   r   s     r   r   z_NavigationToolbar2GTK.zoom)  s.    d$$&&&&&r   c                    | j         j        dk    }| j         j        t          | j                   dz
  k     }d| j        v r | j        d                             |           d| j        v r"| j        d                             |           d S d S )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*S-A-AA-EET]""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dS )RubberbandGTKc                 h    t                               |                                 d ||||           d S r    )r   r   "_make_classic_style_pseudo_toolbar)rK   r   r   r   r   s        r   r   zRubberbandGTK.draw_rubberband7  sB    ..3355tRR	M 	M 	M 	M 	Mr   c                 ^    t                               |                                            d S r    )r   r   r	  rR   s    r   r   zRubberbandGTK.remove_rubberband;  s3    003355	7 	7 	7 	7 	7r   N)r[   r\   r]   r   r   r!   r   r   r  r  6  s5        M M M7 7 7 7 7r   r  c                       e Zd Zd ZdS )ConfigureSubplotsGTKc                 <    t                               | d            d S 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                     ej                     ej                     ej                              Ze	j
        ZdS )_BackendGTKz{}.{}.{}N)r[   r\   r]   formatr   ru   get_minor_versionget_micro_versionbackend_versionre   r   mainloopr!   r   r   r  r  E  sW         '' O
 !0HHHr   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 1 1 1 1 1 1 1 1 ) ) ) ) ) )              - , , , , , 				 . - - - - - - - - - - -ABw A A A
+8
9
9q@A w""    0	 	 	! ! ! ! !y ! ! !H    '   O. O. O. O. O.) O. O. O.d(@ (@ (@ (@ (@/ (@ (@ (@V7 7 7 7 7M0 7 7 7> > > > >=> > > >
1 1 1 1 1( 1 1 1 1 1s   A A+A&&A+