
    hW                        S SK r S SKrS SKrS SKJr  S SKrS SKJrJrJ	r	  S SK
JrJrJrJrJrJrJr   S SKr \R*                  " SS5        S SKJrJrJrJrJr  S	S
KJr  S	SKJ r J!r!J"r"J#r#J$r%  \RL                  " \'5      r(\ RR                  S 5       r* " S S\!\RV                  5      r, " S S\#\RZ                  5      r. " S S\\R^                  5      r0\Rb                  " \,5       " S S\Rd                  5      5       r3\Rb                  " \,5       " S S\Rh                  5      5       r5\Rb                  " \,5       " S S\Rl                  5      5       r7\0r-\Rb                  " \,\Rp                  5        \Rb                  " \,\Rr                  5         " S S\"5      r:\ Rv                   " S S\ 5      5       r<g! \ a  r\" S5      \eSrCff = f! \ a  r\" \5      \eSrCff = f)    N)Path)_apibackend_toolscbook)ToolContainerBaseMouseButton
CloseEventKeyEventLocationEvent
MouseEventResizeEventz#The GTK3 backends require PyGObjectGtkz3.0)GioGLibGObjectr   Gdk   )_backend_gtk)_BackendGTK_FigureCanvasGTK_FigureManagerGTK_NavigationToolbar2GTKTimerGTKc                     [         R                  R                  [         R                  R	                  5       [
        R                  " U 5      5      $ N)r   Cursornew_from_nameDisplayget_defaultr   mpl_to_gtk_cursor_name)
mpl_cursors    R/var/www/html/env/lib/python3.13/site-packages/matplotlib/backends/backend_gtk3.py_mpl_to_gtk_cursorr#   %   s7    ::##!++J79 9    c                     ^  \ rS rSrSr\R                  " S 5      r\R                  R                  \R                  R                  -  \R                  R                  -  \R                  R                  -  \R                  R                  -  \R                  R                  -  \R                  R                   -  \R                  R"                  -  \R                  R$                  -  rSU 4S jjrS rS rSS jrS	 rS
 rS rS rS rS rS rS rS r \!S 5       r"\!SS.S j5       r#S r$S r%S r&S r'S r(S r)S r*S r+S r,Sr-U =r.$ ) FigureCanvasGTK3,   gtk3c                     [         $ r   )FigureManagerGTK3)clss    r"   <lambda>FigureCanvasGTK3.<lambda>.   s    3Dr$   Nc                   > [         TU ]  US9  SU l        S U l        U R	                  SU R
                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  S	U R                  5        U R	                  S	U R                  5        U R	                  S
U R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                   5        U R	                  SU R"                  5        U R%                  U R&                  R(                  5        U R+                  S5        [,        R.                  " 5       nUR1                  S5        U R3                  5       nUR5                  U[,        R6                  5        UR9                  S5        g )N)figurer   scroll_eventbutton_press_eventbutton_release_eventconfigure_eventzscreen-changedznotify::scale-factordrawkey_press_eventkey_release_eventmotion_notify_evententer_notify_eventleave_notify_eventsize_allocateTs/   .matplotlib-canvas { background-color: white; }zmatplotlib-canvas)super__init___idle_draw_id_rubberband_rectconnectr0   r1   r2   r3   _update_device_pixel_ratioon_draw_event
_post_drawr5   r6   r7   r8   r9   r:   
set_events	__class__
event_maskset_can_focusr   CssProviderload_from_dataget_style_contextadd_provider#STYLE_PROVIDER_PRIORITY_APPLICATION	add_class)selfr/   css	style_ctxrD   s       r"   r<   FigureCanvasGTK3.__init__;   s   ' $^T->->?)T-D-DE+T-F-FG&T-A-AB%T-L-LM+T-L-LMVT-?-?@VT__=&T-A-AB(T-C-CD*T-E-EF)T-D-DE)T-D-DE_T-?-?@1124 ooMN**,	sC$K$KL/0r$   c                 8    [        SU 5      R                  5         g )Nclose_event)r	   _processrM   s    r"   destroyFigureCanvasGTK3.destroyZ   s    =$'002r$   c                     U R                  S5      nUbJ  UR                  [        U5      5        [        R                  R                  5       nUR                  S5        g g )NwindowT)get_property
set_cursorr#   r   MainContextdefault	iteration)rM   cursorrX   contexts       r"   rZ   FigureCanvasGTK3.set_cursor]   sS    ""8,089&&..0Gd# r$   c                 T   UcO  U R                  5       nUR                  UR                  5       R                  5       R	                  5       5      u  p4pVOUR
                  UR                  pTX@R                  -  nU R                  R                  R                  XPR                  -  -
  nXE4$ )a_  
Convert the position of a GTK event, or of the current cursor position
if *event* is None, to Matplotlib coordinates.

GTK use logical pixels, but the figure is scaled to physical pixels for
rendering.  Transform to physical pixels so that all of the down-stream
transforms work as expected.

Also, the origin is different and needs to be corrected.
)
get_windowget_device_positionget_displayget_device_managerget_client_pointerxydevice_pixel_ratior/   bboxheight)rM   eventrX   trg   rh   states          r"   _mpl_coordsFigureCanvasGTK3._mpl_coordse   s     =__&F#77""$779LLNPNA!U 77EGGq'''KK##a*A*A&AAtr$   c                     UR                   [        R                  R                  :X  a  SOSn[	        SU /U R                  U5      Q7UU R                  UR                  5      US.6R                  5         g)Nr   r0   )step	modifiersguiEventF)		directionr   ScrollDirectionUPr   ro   _mpl_modifiersrn   rS   )rM   widgetrl   rs   s       r"   r0   FigureCanvasGTK3.scroll_event{   sh    OOs':':'='==q2>4 	#$$U+	#26!00=!	# $,8:r$   c                     [        SU /U R                  U5      QUR                  P7U R                  UR                  5      US.6R                  5         g)Nr1   rt   ru   Fr   ro   buttonry   rn   rS   rM   rz   rl   s      r"   r1   #FigureCanvasGTK3.button_press_event   sT    ' 	#$$U+	#-2\\	#!00=!	# $,8:r$   c                     [        SU /U R                  U5      QUR                  P7U R                  UR                  5      US.6R                  5         g)Nr2   r}   Fr~   r   s      r"   r2   %FigureCanvasGTK3.button_release_event   sT    )4 	#$$U+	#-2\\	#!00=!	# $,8:r$   c                 |    [        SU U R                  U5      /U R                  5       Q7SU06R                  5         g)Nr5   ru   Tr
   _get_keyro   rS   r   s      r"   r5    FigureCanvasGTK3.key_press_event   s>    "Du%	!(,(8(8(:	!	!!)r$   c                 |    [        SU U R                  U5      /U R                  5       Q7SU06R                  5         g)Nr6   ru   Tr   r   s      r"   r6   "FigureCanvasGTK3.key_release_event   s>    $du%	!(,(8(8(:	!	!!)r$   c                     [        SU /U R                  U5      Q7U R                  UR                  5      U R	                  UR                  5      US.6R                  5         g)Nr7   )buttonsrt   ru   F)r   ro   _mpl_buttonsrn   ry   rS   r   s      r"   r7   $FigureCanvasGTK3.motion_notify_event   sY    ($ 	#1A1A%1H 	#,,U[[9!00=!	# $,8:r$   c                     [         R                  R                  U R                  5       5      R	                  5       n[        SU /U R                  U5      Q7U R                  U5      US.6R                  5         g )Nfigure_enter_eventr}   	r   Keymapget_for_displayrd   get_modifier_stater   ro   ry   rS   rM   rz   rl   gtk_modss       r"   r8   #FigureCanvasGTK3.enter_notify_event   j    ::--  2 2 4 	*D 	&43C3CE3J 	& $ 3 3H =$	&&.hjr$   c                     [         R                  R                  U R                  5       5      R	                  5       n[        SU /U R                  U5      Q7U R                  U5      US.6R                  5         g )Nfigure_leave_eventr}   r   r   s       r"   r9   #FigureCanvasGTK3.leave_notify_event   r   r$   c                 (   U R                   R                  nUR                  U R                  -  U-  nUR                  U R                  -  U-  nU R                   R                  XESS9  [        SU 5      R                  5         U R                  5         g )NFforwardresize_event)	r/   dpiwidthri   rk   set_size_inchesr   rS   	draw_idle)rM   rz   
allocationdpivalwinchhinchs         r"   r:   FigureCanvasGTK3.size_allocate   sy      4#:#::VC!!D$;$;;fD##E%#@ND)224r$   c                    [         R                  [        R                  R                  4[         R
                  [        R                  R                  4[         R                  [        R                  R                  4[         R                  [        R                  R                  4[         R                  [        R                  R                  4/nU VVs/ s H  u  p#X-  (       d  M  UPM     snn$ s  snnf r   )r   LEFTr   ModifierTypeBUTTON1_MASKMIDDLEBUTTON2_MASKRIGHTBUTTON3_MASKBACKBUTTON4_MASKFORWARDBUTTON5_MASK)event_statert   namemasks       r"   r   FigureCanvasGTK3._mpl_buttons   s     s//<<=!1!1!>!>? 0 0 = =>s//<<=  #"2"2"?"?@
	 (1GyK4FyGGGs   C2(C2excludec                L   S[         R                  R                  S4S[         R                  R                  S4S[         R                  R                  S4S[         R                  R
                  S4/nU VVVs/ s H  u  p4nX:w  d  M  X-  (       d  M  UPM     snnn$ s  snnnf )Nctrlcontrolaltshiftr;   )r   r   CONTROL_MASK	MOD1_MASK
SHIFT_MASK	MOD4_MASK)r   r   rt   r   r   keys         r"   ry   FigureCanvasGTK3._mpl_modifiers   s     S%%22I>C$$..6c&&117;c&&00':	
	 -6 :IS> &1&8 I : 	: :s   9B	BBc                 t   [        [        R                  " UR                  5      5      n[        R
                  " U[        R                  " UR                  5      5      nU R                  UR                  US9nSU;   a&  UR                  5       (       a  UR                  S5        SR                  / UQUP5      $ )Nr   r   +)chrr   keyval_to_unicodekeyvalr   _unikey_or_keysym_to_mplkeykeyval_namery   rn   isprintableremovejoin)rM   rl   unikeyr   modss        r"   r   FigureCanvasGTK3._get_key   s    S**5<<89//COOELL13""5;;"<d?v1133KK xx$%%r$   c                     U R                  U R                  5       5      (       a!  U R                  5         U R                  5         g g r   )_set_device_pixel_ratioget_scale_factorqueue_resize
queue_drawrM   argskwargss      r"   r@   +FigureCanvasGTK3._update_device_pixel_ratio   s<     ''(=(=(?@@ OO Ar$   c                    UR                  S5      c  g UR                  U R                  -  nUR                  U R                  -  nUS:  d  US:  a  g U R                  R
                  nU R                  R                  X5-  XE-  SS9  g)NrX      Fr   )rY   r   ri   rk   r/   r   r   )rM   rz   rl   whr   s         r"   r3    FigureCanvasGTK3.configure_event   s{    x(0KK$111LL4222q5AEkkoo##AGQWe#Dr$   c                 0    Xl         U R                  5         g r   )r>   r   )rM   rects     r"   _draw_rubberband!FigureCanvasGTK3._draw_rubberband   s     $r$   c                   ^  T R                   c  g U 4S jT R                    5       u  p4pVX5-   nXF-   nUR                  X45        UR                  X85        UR                  X45        UR                  Xt5        UR                  X85        UR                  Xx5        UR                  Xt5        UR                  Xx5        UR                  S5        UR	                  S5        UR                  SS5        UR                  SSS5        UR                  5         UR                  SS5        UR                  SSS5        UR                  5         g )Nc              3   B   >#    U  H  nUTR                   -  v   M     g 7fr   )ri   ).0dimrM   s     r"   	<genexpr>.FigureCanvasGTK3._post_draw.<locals>.<genexpr>   s#      :#8C d555#8s   r   )r   r   r   r   )	r>   move_toline_toset_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke)	rM   rz   ctxx0y0r   r   x1y1s	   `        r"   rB   FigureCanvasGTK3._post_draw   s     (:#'#8#8:VV 	BBBBBBBB!1VQ1a#VQ1a#

r$   c                     g r    )rM   rz   r   s      r"   rA   FigureCanvasGTK3.on_draw_event  s    r$   c                 P    U R                  5       (       a  U R                  5         g g r   )is_drawabler   rT   s    r"   r4   FigureCanvasGTK3.draw  s     OO r$   c                 j   ^  T R                   S:w  a  g U 4S jn[        R                  " U5      T l         g )Nr   c                  N   >  TR                  5         STl        g! STl        f = f)Nr   F)r4   r=   )r   rM   s    r"   	idle_draw-FigureCanvasGTK3.draw_idle.<locals>.idle_draw   s(    '		%&" &'"s    	$)r=   r   idle_add)rM   r   s   ` r"   r   FigureCanvasGTK3.draw_idle  s,    "	 "]]95r$   c                     [         R                  R                  5       nUR                  5       (       a)  UR	                  S5        UR                  5       (       a  M(  g g )NT)r   r[   r\   pendingr]   )rM   r_   s     r"   flush_eventsFigureCanvasGTK3.flush_events(  s@    ""**,ood# oor$   )r=   r>   r   )/__name__
__module____qualname____firstlineno__required_interactive_frameworkr   classpropertymanager_classr   	EventMaskBUTTON_PRESS_MASKBUTTON_RELEASE_MASKEXPOSURE_MASKKEY_PRESS_MASKKEY_RELEASE_MASKENTER_NOTIFY_MASKLEAVE_NOTIFY_MASKPOINTER_MOTION_MASKSCROLL_MASKrE   r<   rU   rZ   ro   r0   r1   r2   r5   r6   r7   r8   r9   r:   staticmethodr   ry   r   r@   r3   r   rB   rA   r4   r   r  __static_attributes____classcell__)rD   s   @r"   r&   r&   ,   sg   %+"&&'DEM --11MM556MM//0 MM001 MM22	3
 MM334 MM334 MM556 MM--.J1>3$,11 	H 	H /3 : :&

<

6$ $r$   r&   c                        \ rS rSrS rS rSrg)NavigationToolbar2GTK3i/  c                    [         R                   R                  U 5        U R                  [        R                  R
                  5        0 U l        U R                   GHK  u  p#pEUc'  U R                  [        R                  " 5       S5        M1  [        R                  R                  [        R                  R                  [        [         R"                  " SU S35      5      5      [        R$                  R&                  5      nUS;   a  [        R(                  " 5       O[        R*                  " 5       =U R                  U'   nUR-                  U5        UR/                  U5        UR1                  S[3        X5      5      Ul        UR7                  U5        U R                  US5        GMN     [        R8                  " 5       nU R                  US5        [        R:                  " 5       n	U	R=                  S5        UR?                  S5        URA                  U	5        [        R8                  " 5       nU R                  US5        [        R:                  " 5       U l!        U RB                  RE                  [        RF                  RH                  5        URA                  U RB                  5        U RK                  5         [L        R                  " X5        g )Nrr   images-symbolic.svg)zoompanclickedu   <small> 
 </small>T)'r   r<   	set_styler   ToolbarStyleICONS_gtk_ids	toolitemsinsertSeparatorToolItemImagenew_from_giconr   Iconnew_for_stringstrr   _get_data_pathIconSizeLARGE_TOOLBARToggleToolButton
ToolButton	set_labelset_icon_widgetr?   getattr_signal_handlerset_tooltip_textToolItemLabel
set_markup
set_expandaddmessageset_justifyJustificationr   show_allr   )
rM   canvastexttooltip_text
image_filecallbackimager   toolitemlabels
             r"   r<   NavigationToolbar2GTK3.__init__0  s     &s''--.8<4D
|C113R8II,,'',,X0:|=-IK LM **	,E +3o*E$$& "DMM$& T"""5)%+^^742&4F"##L1KK#% 9G0 <<>Hb!		C	ED!U<<>Hb!yy{  !2!2!8!89T\\"''5r$   c           	        ^ ^
 [         R                  " ST R                  R                  5       [         R                  R
                  [         R                  [         R                  R                  [         R                  [         R                  R                  4S9m
T R                  R                  5       R                  5        H  u  p#[         R                  " 5       nUR                  U5        U H  nUR                  SU 35        M     T
R!                  U5        T R                  R#                  5       U;   d  My  T
R%                  U5        M     [&        R(                  " T
R*                  S5      U
U 4S j5       nT
R-                  [.        R0                  S   5        T
R3                  T R                  R5                  5       5        T
R7                  S5        T
R9                  5       nT
R;                  5       nT
R=                  5       nT R                  R                  5       UR?                  5          S   nT
RA                  5         U[         R                  R                  :w  a  g [.        R0                  S   (       a0  [B        RD                  RG                  U5      [.        R0                  S'    T R                  RH                  RK                  XS	9  U$ ! [L         a  n	[         RN                  " T R                  R                  5       [Q        U	5      [         RR                  RT                  [         RV                  R                  S
9m
T
R9                  5         T
RA                  5          S n	A	g S n	A	ff = f)NzSave the figure)titletransient_foractionr   z*.znotify::filterc                    > TR                  5       R                  5       nTR                  R                  5       U   S   nTR	                  [        [        TR                  5       5      R                  SU 35      5      5        g )Nr   .)	
get_filterget_namerC  get_supported_filetypes_groupedset_current_namer/  r   get_current_namewith_suffix)r   r   fmtdialogrM   s      r"   on_notify_filter<NavigationToolbar2GTK3.save_figure.<locals>.on_notify_filterr  sl    $$&//1D++==?EaHC##D0023??!C5	JKMr$   zsavefig.directoryTr   )format)rN  rD  message_typer   ),r   FileChooserDialogrC  get_toplevelFileChooserActionSAVESTOCK_CANCELResponseTypeCANCEL
STOCK_SAVEOKrT  items
FileFilterset_nameadd_pattern
add_filterget_default_filetype
set_filter	functoolspartialr?   set_current_foldermplrcParamsrU  get_default_filenameset_do_overwrite_confirmationrunget_filenamerR  rS  rU   ospathdirnamer/   savefig	ExceptionMessageDialogr/  MessageTypeERRORButtonsType)rM   r   r   fmtsffrX  rZ  responsefnameerY  s   `         @r"   save_figure"NavigationToolbar2GTK3.save_figure`  s~   &&#++224((--%%s'7'7'>'>^^s'7'7':':<	
 ;;>>@FFH D!BKKC5z* b!{{//1T9!!"% I 
		6>>+;	<	M 
=	M 	!!#,,/B"CD @ @ BC,,T2::<##% kk99;BKKMJ1Ms''***<<+,020FCLL,-	KK&&u&9L 	&&"kk668s1v __22COO<N<NPF JJLNN	s   -$K 
M.BM))M.)r'  r?  N)r  r	  r
  r  r<   r  r  r   r$   r"   r  r  /  s    .6`/r$   r  c                   H    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)ToolbarGTK3i  r   c                    [         R                  " X5        [        R                  R                  U 5        U R	                  S[        R
                  R                  5        [        R                  " 5       U l        U R                  R                  [        R                  R                  5        U R                  U R                  SSS5        U R                  5         0 U l        0 U l        g )NorientationFr   )r   r<   r   Boxset_propertyOrientation
HORIZONTALr;  _messager@  rA  r   pack_endrB  _groups
_toolitems)rM   toolmanagers     r"   r<   ToolbarGTK3.__init__  s    ""45-)C)CD		!!#"3"3"9"9:dmmUE15r$   c                 |   U(       a  [         R                  " 5       nO[         R                  " 5       nUR                  U5        Ubf  [         R                  R                  [        R                  R                  U5      [         R                  R                  5      nUR                  U5        Uc  SnU R                  XrU5        UR                  SU R                  U5      n	UR                  U5        UR!                  5         U R"                  R%                  U/ 5        U R"                  U   R'                  Xy45        g )Nrr   r#  )r   r3  r4  r5  r+  r,  r   r-  r.  r1  r2  r6  _add_buttonr?   
_call_toolr9  rB  r  
setdefaultappend)
rM   r   grouppositionrF  descriptiontoggler   rH  signals
             r"   add_toolitemToolbarGTK3.add_toolitem  s    ))+F^^%F!II,,''
3**,E ""5)H1	4??DA,""4,$$f%56r$   c                    X R                   ;  a  U R                   (       a  U R                  5         [        R                  " 5       nUR	                  [        R
                  R                  5        U R                  USSS5        UR                  5         X@R                   U'   U R                   U   R                  X5        g )NFr   )
r  _add_separatorr   Toolbarr$  r%  r&  
pack_startrB  r)  )rM   r   r  r  toolbars        r"   r  ToolbarGTK3._add_button  s    $||##%kkmGc..445OOGUE15")LLU""64r$   c                 &    U R                  U5        g r   )trigger_tool)rM   btnr   s      r"   r  ToolbarGTK3._call_tool  s    $r$   c                     XR                   ;  a  g U R                   U    H8  u  p4UR                  U5        UR                  U5        UR                  U5        M:     g r   )r  handler_block
set_activehandler_unblock)rM   r   toggledrI  r  s        r"   toggle_toolitemToolbarGTK3.toggle_toolitem  sO    & $ 5H""6*($$V, !6r$   c                     U R                   R                  U/ 5       HJ  u  p#U R                   H5  nX R                  U   ;   d  M  U R                  U   R                  U5        M7     ML     g r   )r  popr  r   )rM   r   rI  _signalr  s        r"   remove_toolitemToolbarGTK3.remove_toolitem  sT    !%!4!4T2!>H||E22LL'..x8 & "?r$   c                     [         R                  " 5       nUR                  S[         R                  R                  5        U R                  USSS5        UR                  5         g )Nr  FTr   )r   	Separatorr  r  VERTICALr  rB  )rM   seps     r"   r  ToolbarGTK3._add_separator  sB    mmo(@(@AUD!,r$   c                 :    U R                   R                  U5        g r   )r  r5  )rM   ss     r"   set_messageToolbarGTK3.set_message  s    "r$   )r  r  r  N)r  r	  r
  r  _icon_extensionr<   r  r  r  r  r  r  r  r  r   r$   r"   r  r    s/    %O	70	5 -9#r$   r  c                       \ rS rSrS rSrg)SaveFigureGTK3i  c                 J    [         R                  U R                  5       5        g r   )r  r  "_make_classic_style_pseudo_toolbarr   s      r"   triggerSaveFigureGTK3.trigger  s    **335	7r$   r   Nr  r	  r
  r  r  r  r   r$   r"   r  r    s    7r$   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	HelpGTK3i  c                 .   SSSSS.nUR                  S5      nUSS  Vs/ s H  nS	U-   S
-   PM     nnUS   nX;   a  X!   nO;[        U5      S:  a  UR                  5       nOUR                  5       (       a  US/-  nSR	                  U5      U-   $ s  snf )zj
Convert Matplotlib key presses to GTK+ accelerator identifiers.

Related to `FigureCanvasGTK3._get_key`.
	BackSpace	Page_DownPage_UpScroll_Lock)	backspacepagedownpageupscroll_lockr   Nrr   <>r   z<shift> )splitlen
capitalizeisupperr   )rM   r   specialpartsmodr   s         r"   _normalize_shortcutHelpGTK3._normalize_shortcut  s     %#(	
 		#+0":6:Cc	C:6Bi>,CX\.."C[[]]YKDwwt}s"" 7s   Bc                 F    SU;  =(       a    UR                  S5      (       + $ )z
Check for a valid shortcut to be displayed.

- GTK will never send 'cmd+' (see `FigureCanvasGTK3._get_key`).
- The shortcut window only shows keyboard shortcuts, not mouse buttons.
zcmd+zMouseButton.)
startswith)rM   r   s     r"   _is_valid_shortcutHelpGTK3._is_valid_shortcut  s      S G)G%GGr$   c           	        ^  [         R                  " 5       n[        T R                  R                  R                  5       5       H  u  p#UR                  (       d  M  [         R                  " 5       nUR                  U5        UR                  S S 5        [         R                  " SR                  U 4S jT R                  R                  U5       5       5      UR                  UR                  S9nUR                  U5        M     [         R                  " SST R                  R                   R#                  5       S9nUR%                  5         UR                  U5        UR'                  5         g )Nc                 $    U R                  S5      $ )NF)set_visible)rz   datas     r"   r,   1HelpGTK3._show_shortcuts_window.<locals>.<lambda>  s    f.@.@.Gr$    c              3   v   >#    U  H.  nTR                  U5      (       d  M  TR                  U5      v   M0     g 7fr   )r  r  )r   r   rM   s     r"   r   2HelpGTK3._show_shortcuts_window.<locals>.<genexpr>  s6      %5E..s3 2D,,S11Es   99)acceleratorrM  subtitleHelpT)rM  modalrN  )r   ShortcutsSectionsortedr  toolsrg  r  ShortcutsGroupr>  forallShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurerC  r_  showrB  )rM   sectionr   toolr  shortcutrX   s   `      r"   _show_shortcuts_windowHelpGTK3._show_shortcuts_window
  s   &&( !1!1!7!7!=!=!?@JD## &&(EKKLLGN,,HH %5#//??E%5 5 ii))+H IIh) A, $$,,--::<> 	

7r$   c           	      6   [         R                  " U R                  R                  R	                  5       S[         R
                  R                  [         R                  R                  U R                  5       SS9nUR                  5         UR                  5         g )Nr   r  )rM  )r   r|  r  rC  r_  r}  INFOr  rf  _get_help_textru  rU   )rM   rY  s     r"   _show_shortcuts_dialogHelpGTK3._show_shortcuts_dialog,  sf    ""LL,,.s##S__%7%79L9L9N 	

r$   c                 x    [         R                  " SSS5      c  U R                  5         g U R                  5         g )Nr      r   )r   check_versionr  r  )rM   r   s     r"   r  HelpGTK3.trigger4  s/    QA&.'')'')r$   r   N)
r  r	  r
  r  r  r  r  r  r  r  r   r$   r"   r  r    s    #4H D*r$   r  c                       \ rS rSrS rSrg)ToolCopyToClipboardGTK3i;  c                 
   [         R                  R                  [        R                  5      nU R
                  R                  5       nUR                  5       u  pVpx[        R                  " XEXgU5      n	UR                  U	5        g r   )
r   	Clipboardgetr   SELECTION_CLIPBOARDrC  rb   get_geometrypixbuf_get_from_window	set_image)
rM   r   r   	clipboardrX   rg   rh   r   rk   pbs
             r"   r  ToolCopyToClipboardGTK3.trigger=  sc    MM%%c&=&=>	'')$113e''1VDBr$   r   Nr  r   r$   r"   r  r  ;  s     r$   r  c                       \ rS rSr\r\rSrg)r*   iL  r   N)	r  r	  r
  r  r  _toolbar2_classr  _toolmanager_toolbar_classr  r   r$   r"   r*   r*   L  s    ,O!,r$   r*   c                       \ rS rSr\r\rSrg)_BackendGTK3iQ  r   N)	r  r	  r
  r  r&   FigureCanvasr*   FigureManagerr  r   r$   r"   r  r  Q  s    #L%Mr$   r  )=rn  loggingrw  pathlibr   
matplotlibrq  r   r   r   matplotlib.backend_basesr   r   r	   r
   r   r   r   giImportErrorerrrequire_version
ValueErrorr  gi.repositoryr   r   r   r   r   r  r   r   r   r   r   r   	TimerGTK3	getLoggerr  _logcacher#   DrawingArear&   r  r  r  r  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser  ConfigureSubplotsGTKRubberbandGTKr*   exportr  r   r$   r"   <module>r0     s     	   1 1B B BF  ue$ 7 6   " 9 9@$' @$F`3S[[ `FI##SWW I#X ##$457]11 7 67 ##$45R*})) R* 6R*j ##$45 mCC   6    " "l779  " "l002-) -
 &; & &I  F
;
<#EF    a.a s.   F4 G 4G:	GGG	GG