+
    ,i
,                        R t ^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIH	t	 ^ RI
HtHtHtHtHt ^ RIHt ^ RIt^ RIHtHtHtHt  ]P0                  ! R4       ]P6                  ! ]4      tRsR	 tR
 t R t! ! R R]4      t" ! R R]4      t# ! R R]4      t$ ! R R]4      t% ! R R]PL                  4      t' ! R R]PP                  4      t) ! R R]4      t*R#   ] d   t]! R4      ]hRtAii ; i)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                 f    V P                  4        F  pVP                  4        K  	  R V n        RsR# )TN)get_windowsclose_created_by_matplotlib_application)appwins   & B/usr/lib/python3/dist-packages/matplotlib/backends/_backend_gtk.py_shutdown_applicationr      s-      		 ! "&CL    c                     \         f   \        P                  P                  4       p V e   \	        V RR4      '       d   \
        P                  P                  4       '       g   \        R4      h\        P                  P                  R\        P                  P                  4      s \         P                  RR 4       \         P                  R\        4       \         P                  4        \         P"                  ! 4        \         # V s \         # )Nr   FzInvalid DISPLAY variablezorg.matplotlib.Matplotlib3activatec                      R # 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_applicationr2   -   s     oo))+;'#'?GG ((99;;"#=>>??../K/2/C/C/N/NPL   -IJ  -BC!!###%  Lr   c                    \         P                  ! \        P                  R \        P                  R\        P
                  R\        P                  R\        P                  R\        P                  R\        P                  R/V R7      # )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_namerC   E   sd    fi{f!!;  r   c                   T   a a ] tR t^Qt oRtV 3R ltR tR tR tV 3R lt	Rt
VtV ;t# )TimerGTKz0Subclass of `.TimerBase` using GTK timer events.c                6   < R V n         \        SV `  ! V/ VB  R # r   )_timersuper__init__)selfr    r!   	__class__s   &*,r   rI   TimerGTK.__init__T   s    $)&)r   c                    V P                  4        \        P                  ! V P                  V P                  4      V n        R # r   )_timer_stopr   timeout_add	_interval	_on_timerrG   rJ   s   &r   _timer_startTimerGTK._timer_startX   s,     	&&t~~t~~Fr   c                t    V P                   e*   \        P                  ! V P                   4       R V n         R # R # r   )rG   r   source_removerR   s   &r   rN   TimerGTK._timer_stop^   s*    ;;"t{{+DK #r   c                f    V P                   e#   V P                  4        V P                  4        R # R # r   )rG   rN   rS   rR   s   &r   _timer_set_intervalTimerGTK._timer_set_intervalc   s)    ;;" #r   c                ~   < \         SV `  4        V P                  '       d   V P                  '       g   R # RV n        R# )TNF)rH   rQ   	callbacks_singlerG   )rJ   rK   s   &r   rQ   TimerGTK._on_timeri   s.     >>>$,,,DKr   )rG   )__name__
__module____qualname____firstlineno____doc__rI   rS   rN   rY   rQ   __static_attributes____classdictcell____classcell__rK   __classdict__s   @@r   rE   rE   Q   s'     :*G
 	 	r   rE   c                       ] tR t^ut]tRtR# )_FigureCanvasGTKr   N)r_   r`   ra   rb   rE   
_timer_clsrd   r   r   r   rj   rj   u   s    Jr   rj   c                   j   a a ] tR t^yt oRtV 3R ltR t]R 4       tR t	R t
R tR tR	 tR
tVtV ;t# )_FigureManagerGTKa  
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                  <a  \         P                  ! 4       ;S n        p\        4       p\         P                  ! 4       S n        VP                  S P
                  4       \        SS `!  W4       V^8X  dU   \        P                  R8X  d   RMRpS P
                  P                  \        \        P                  ! RV 24      4      4       \         P                  ! 4       S n        S P                   P#                  R\         P$                  P&                  4       V^8X  d   S P
                  P)                  S P                   4       S P                   P+                  4        S P,                  P+                  4        S P                   P/                  S P,                  RR^ 4       MQV^8X  dK   S P
                  P1                  S P                   4       S P                   P3                  S P,                  4       S P,                  P5                  4       w  rgS P6                  e   V^8X  dD   S P6                  P+                  4        S P                   P9                  S P6                  RR^ 4       MlV^8X  df   \         P:                  ! \         P<                  P>                  R	7      pVP1                  S P6                  4       S P                   PA                  V4       S P6                  PC                  4       w  rWzPD                  ,          pS P
                  PG                  Wg4       RS n$        S P
                  PK                  R
V 3R l4       S P
                  PK                  ^R^R/V,          V 3R l4       \L        PN                  ! 4       '       d5   S P
                  P+                  4        S P,                  PQ                  4        S P,                  PS                  4        R# )   win32pngsvgzimages/matplotlib.orientationTNF)vscrollbar_policydestroyc                  0   < \         P                  ! S4      # r   r   ru   r    rJ   s   *r   r"   ,_FigureManagerGTK.__init__.<locals>.<lambda>   s    S[[5Fr   delete_eventzclose-requestc                  0   < \         P                  ! S4      # r   rw   rx   s   *r   r"   ry      s    #++d*;r   )*r   get_major_version_gtk_verr2   Windowwindow
add_windowrH   rI   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_destroyingr/   r(   is_interactive	draw_idle
grab_focus)rJ   r   numgtk_verr   icon_extwhswmin_sizenat_sizerK   s   f&&        r   rI   _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Q?CGL;	=KKKK!!# r   c                    V P                   '       d   R # RV n         V P                  P                  4        V P                  P                  4        R # NT)r   r   ru   r   rJ   r    s   &*r   ru   _FigureManagerGTK.destroy   s;    
 r   c                   \         f   R #  \         P                  4         R s R #   \         dJ    \        P                  P                  4       pTP                  4       '       d   TP                  R4       K)  h i ; i  R s i ; ir   )r   runKeyboardInterruptr   MainContextr6   pending	iteration)clscontexts   & r   start_main_loop!_FigureManagerGTK.start_main_loop   sr     	   L ! 	 &&..0G//##!!$'	  Ls   % >A9$A99A< <B c                   V P                   P                  4        V P                  P                  4        \        P
                  R ,          '       dm   ^R^R/V P                  ,          p\        V P                   V4      ! 4       '       d   V P                   P                  4        R# \        P                  ! R4       R# R# )zfigure.raise_window
get_windowget_surfacez#Cannot raise window yet to be setupN)r   r   r   drawr(   rcParamsr}   r'   presentr   warn_external)rJ   	meth_names   & r   r   _FigureManagerGTK.show   s    <<-..L!];DMMJIt{{I.00##% ""#HI /r   c                    ^R ^R /V P                   ,          pV! V P                  4      '       d   V P                  P                  4        R# V P                  P                  4        R# )ro   c                 |    V P                  4       P                  4       \        P                  P                  ,          # 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                 "    V P                  4       # r   )is_fullscreenr   s   &r   r"   r      s    *r   N)r}   r   unfullscreen
fullscreen)rJ   r   s   & r   full_screen_toggle$_FigureManagerGTK.full_screen_toggle   sV     8*
 --	
 %%KK$$&KK""$r   c                6    V P                   P                  4       # r   )r   	get_titlerR   s   &r   get_window_title"_FigureManagerGTK.get_window_title   s    {{$$&&r   c                <    V P                   P                  V4       R # r   )r   	set_title)rJ   titles   &&r   set_window_title"_FigureManagerGTK.set_window_title   s    e$r   c                ,   \        WP                  P                  ,          4      p\        W P                  P                  ,          4      pV P                  '       d/   V P                  P	                  4       w  r4W$P
                  ,          pV P                  P                  4       pV P                  ^8  g'   VP                  VP
                  u;8X  d   ^8X  d!   M MV P                  P                  W4       R# V P                  P                  W4       R# )   N)intr   device_pixel_ratior   r   r   get_allocationr}   widthr   r   resize)rJ   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   )r_   r`   ra   rb   rc   rI   ru   classmethodr   r   r   r   r   r   rd   re   rf   rg   s   @@r   rm   rm   y   sH     1!f	    $J	%'%. .r   rm   c                   \   a a ] tR tRt oR tR tR tR tV 3R ltV 3R lt	R t
R	tVtV ;t# )
_NavigationToolbar2GTKi  c                p    \         P                  ! V4      pV P                  P                  R V R24       R# )z<small>z</small>N)r   markup_escape_textmessage
set_markup)rJ   sescapeds   && r   set_message"_NavigationToolbar2GTK.set_message  s-    ))!,''( ;<r   c                   V P                   P                  P                  P                  pWe,
          pWc,
          pW#WB,
          WS,
          3 Uu. uF  p\	        V4      NK  	  ppV P                   P                  V4       R # u upi r   )r   figurebboxr   r   _draw_rubberband)	rJ   eventx0y0x1y1r   valrects	   &&&&&&   r   draw_rubberband&_NavigationToolbar2GTK.draw_rubberband  sh    ##((//[[%'RWbg$>?$>SC$>?$$T* @s   Bc                <    V P                   P                  R 4       R # r   )r   r   rR   s   &r   remove_rubberband(_NavigationToolbar2GTK.remove_rubberband  s    $$T*r   c                6   R F~  w  rV P                   P                  V4      pV'       g   K*  VP                  VP                  4      ;_uu_ 4        VP	                  V P
                  P                  V8H  4       RRR4       K  	  R#   + '       g   i     K  ; i)PanN))r   PAN)ZoomZOOM)_gtk_idsgethandler_block_signal_handler
set_activemodename)rJ   r  activebuttons   &   r   _update_buttons_checked._NavigationToolbar2GTK._update_buttons_checked  so    >LD]]&&t,Fv))&*@*@AA%%diinn&>? BA ? BAAs   )BBc                D   < \         SV `  ! V!   V P                  4        R # r   )rH   panr  rJ   r    rK   s   &*r   r
  _NavigationToolbar2GTK.pan%  s    T$$&r   c                D   < \         SV `  ! V!   V P                  4        R # r   )rH   zoomr  r  s   &*r   r  _NavigationToolbar2GTK.zoom)  s    d$$&r   c                n   V P                   P                  ^ 8  pV P                   P                  \        V P                   4      ^,
          8  pRV P                  9   d#   V P                  R,          P	                  V4       RV P                  9   d%   V P                  R,          P	                  V4       R# R# )    BackForwardN)
_nav_stack_poslenr   set_sensitive)rJ   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   )r_   r`   ra   rb   r   r   r   r  r
  r  r  rd   re   rf   rg   s   @@r   r   r     s0     
=++@''@ @r   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )RubberbandGTKi6  c                R    \         P                  V P                  4       R WW44       R # r   )r   r   "_make_classic_style_pseudo_toolbar)rJ   r   r   r   r   s   &&&&&r   r   RubberbandGTK.draw_rubberband7  s#    ..335tRR	Mr   c                L    \         P                  V P                  4       4       R # r   )r   r   r  rR   s   &r   r   RubberbandGTK.remove_rubberband;  s    00335	7r   r   N)r_   r`   ra   rb   r   r   rd   re   rh   s   @r   r  r  6  s     M7 7r   r  c                   &   a  ] tR tRt o R tRtV tR# )ConfigureSubplotsGTKi@  c                2    \         P                  V R 4       R # r   )r   configure_subplotsr   s   &*r   triggerConfigureSubplotsGTK.triggerA  s    11$=r   r   N)r_   r`   ra   rb   r(  rd   re   r#  s   @r   r%  r%  @  s     > >r   r%  c                       ] tR tRtRP	                  ]P                  ! 4       ]P                  ! 4       ]P                  ! 4       4      t	]
P                  tRtR# )_BackendGTKiE  z{}.{}.{}r   N)r_   r`   ra   rb   formatr   r|   get_minor_versionget_micro_versionbackend_versionrm   r   mainlooprd   r   r   r   r+  r+  E  sC     ''O
 !00Hr   r+  )+rc   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	getLoggerr_   _logr   r   r2   rC   rE   rj   rm   r   RubberbandBaser  ConfigureSubplotsBaser%  r+  r   r   r   <module>r?     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+