
    G8cY                        d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ 	 d dlZ	  ej0                  dd       d d	lmZmZmZmZm Z  d
dl!m"Z" d
dl"m#Z#m$Z$m%Z%m&Z'  ejP                  e)      Z*ejV                   G d d             Z, e jZ                         d        Z. G d deej^                        Z0 G d de%ejb                        Z2 G d deejf                        Z4 e	jj                  e0       G d de	jl                               Z7 ejp                  dd       G d de	jr                               Z: e	jj                  e0       G d de	jv                               Z< e	jj                  e0       G d d e	jz                               Z> ejp                  d!      d'd"       Z?e4Z1 e	jj                  e0e"j                          e	jj                  e0e"j                          G d# d$e$      ZBe#j                   G d% d&e#             ZDy# e$ rZ ed      edZ[ww xY w# e$ rZeedZ[ww xY w)(    N)Path)_apibackend_toolscbook)FigureCanvasBaseToolContainerBase
CloseEventKeyEventLocationEvent
MouseEventResizeEvent)Cursorsz#The GTK3 backends require PyGObjectGtkz3.0)GioGLibGObjectr   Gdk   )_backend_gtk)_BackendGTK_FigureManagerGTK_NavigationToolbar2GTKTimerGTKc                       e Zd Z ej                  dd      ed               Z  ej                  dd       ed             Z  ej                  dd       ed             Zy)	__getattr__3.5 )obj_typec                    	 t        j                  t        j                  j                  t        j
                  j                               }t        j                   |d      t        j                   |d      t        j                   |d      t        j                   |d      t        j                   |d      iS # t        $ r i cY S w xY w)Nmovepointerdefault	crosshairwait)	functoolspartialr   Cursornew_from_nameDisplayget_defaultr   MOVEHANDPOINTERSELECT_REGIONWAIT	TypeError)self
new_cursors     B/usr/lib/python3/dist-packages/matplotlib/backends/backend_gtk3.pycursordz__getattr__.cursord)   s    	"**

((#++*A*A*CEJ z&'9z)'<z)'<%%z+'>z&'9   	I	s   B9B< <C
	C
3.6c                 0    t         j                  dk(  rdS dS )Nwin32zmatplotlib.pngzmatplotlib.svg)sysplatformr1   s    r3   <lambda>z__getattr__.<lambda>:   s    LLG3 9I     c                 R    t        t        j                  dt        d                  S )Nimagesicon_filename)strr   _get_data_pathr   r:   s    r3   r;   z__getattr__.<lambda>=   s!    E  ;+GHI r<   N)	__name__
__module____qualname__r   
deprecatedpropertyr4   r?   window_icon r<   r3   r   r   '   s}    T__UR(  ) 8ODOOEB7	J9K LM 6/$//%"5h	J7K LKr<   r   c                     t         j                  j                  t         j                  j	                         t        j                  |             S N)r   r'   r(   r)   r*   r   mpl_to_gtk_cursor_name)
mpl_cursors    r3   _mpl_to_gtk_cursorrM   A   s7    ::##!++J79 9r<   c                   j    e Zd ZdZeZ ej                  d       Ze	j                  j                  e	j                  j                  z  e	j                  j                  z  e	j                  j                  z  e	j                  j                  z  e	j                  j                   z  e	j                  j"                  z  e	j                  j$                  z  e	j                  j&                  z  Zd fd	Zd Zd ZddZd Zd Zd	 Zd
 Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z* xZ+S )FigureCanvasGTK3gtk3c                     t         S rJ   )FigureManagerGTK3)clss    r3   r;   zFigureCanvasGTK3.<lambda>K   s    3D r<   c                    t         |   |       d| _        d | _        | j	                  d| j
                         | j	                  d| j                         | j	                  d| j                         | j	                  d| j                         | j	                  d| j                         | j	                  d| j                         | j	                  d	| j                         | j	                  d	| j                         | j	                  d
| j                         | j	                  d| j                         | j	                  d| j                         | j	                  d| j                         | j	                  d| j                          | j	                  d| j"                         | j%                  | j&                  j(                         | j+                  d       t-        j.                         }|j1                  d       | j3                         }|j5                  |t,        j6                         |j9                  d       y )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connectrV   rW   rX   rY   _update_device_pixel_ratioon_draw_event
_post_drawr[   r\   r]   r^   r_   r`   
set_events	__class__
event_maskset_can_focusr   CssProviderload_from_dataget_style_contextadd_provider#STYLE_PROVIDER_PRIORITY_APPLICATION	add_class)r1   rU   css	style_ctxrj   s       r3   rb   zFigureCanvasGTK3.__init__X   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    t        d|       j                          y )Nclose_event)r	   _processr:   s    r3   destroyzFigureCanvasGTK3.destroyw   s    =$'002r<   c                     | j                  d      }|J|j                  t        |             t        j                  j                         }|j                  d       y y )NwindowT)get_property
set_cursorrM   r   MainContextr"   	iteration)r1   cursorrz   contexts       r3   r|   zFigureCanvasGTK3.set_cursorz   sS    ""8,089&&..0Gd# r<   c                 ^   |Q| j                         }|j                  |j                         j                         j	                               \  }}}}n|j
                  |j                  }}|| j                  z  }| j                  j                  j                  || j                  z  z
  }||fS )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_ratiorU   bboxheight)r1   eventrz   tr   r   states          r3   _mpl_coordszFigureCanvasGTK3._mpl_coords   s     =__&F#77""$779LLNPNAq!U 77EGGqA'''KK##a$*A*A&AA!tr<   c                     |j                   t        j                  j                  k(  rdnd}t	        d| g| j                  |      ||dj                          y)Nr   rV   )stepguiEventF)	directionr   ScrollDirectionUPr   r   rw   )r1   widgetr   r   s       r3   rV   zFigureCanvasGTK3.scroll_event   sR    OOs':':'='==q2>4 	#$*:*:5*A 	#!	##+8:r<   c                 v    t        d| g| j                  |      |j                  d|ij                          y)NrW   r   Fr   r   buttonrw   r1   r   r   s      r3   rW   z#FigureCanvasGTK3.button_press_event   s@    ' 	#$$U+	#-2\\	#!	##+8:r<   c                 v    t        d| g| j                  |      |j                  d|ij                          y)NrX   r   Fr   r   s      r3   rX   z%FigureCanvasGTK3.button_release_event   s@    )4 	#$$U+	#-2\\	#!	##+8:r<   c                 |    t        d| | j                  |      g| j                         d|ij                          y)Nr[   r   Tr
   _get_keyr   rw   r   s      r3   r[   z FigureCanvasGTK3.key_press_event   s>    "Du%	!(,(8(8(:	!	!!)r<   c                 |    t        d| | j                  |      g| j                         d|ij                          y)Nr\   r   Tr   r   s      r3   r\   z"FigureCanvasGTK3.key_release_event   s>    $du%	!(,(8(8(:	!	!!)r<   c                 ^    t        d| g| j                  |      d|ij                          y)Nr]   r   F)r   r   rw   r   s      r3   r]   z$FigureCanvasGTK3.motion_notify_event   s3    ($ 	#1A1A%1H 	#!	##+8:r<   c                 ^    t        d| g| j                  |      d|ij                          y )Nfigure_enter_eventr   r   r   rw   r   s      r3   r^   z#FigureCanvasGTK3.enter_notify_event   0    *D 	&43C3CE3J 	&$	&&.hjr<   c                 ^    t        d| g| j                  |      d|ij                          y )Nfigure_leave_eventr   r   r   s      r3   r_   z#FigureCanvasGTK3.leave_notify_event   r   r<   c                 0   | j                   j                  }|j                  | j                  z  |z  }|j                  | j                  z  |z  }| j                   j                  ||d       t        d|       j                          | j                          y )NFforwardresize_event)	rU   dpiwidthr   r   set_size_inchesr   rw   	draw_idle)r1   r   
allocationdpivalwinchhinchs         r3   r`   zFigureCanvasGTK3.size_allocate   s{      4#:#::VC!!D$;$;;fD##E5%#@ND)224r<   c                    t        t        j                  |j                              }t	        j
                  |t        j                  |j                              }t        j                  j                  dft        j                  j                  dft        j                  j                  dft        j                  j                  dfg}|D ]2  \  }}|j                  |z  s|dk(  r|j                         r,| d| }4 |S )Nctrlaltshiftra   +)chrr   keyval_to_unicodekeyvalr   _unikey_or_keysym_to_mplkeykeyval_nameModifierTypeCONTROL_MASK	MOD1_MASK
SHIFT_MASK	MOD4_MASKr   isprintable)r1   r   unikeykey	modifierskey_maskprefixs          r3   r   zFigureCanvasGTK3._get_key   s    S**5<<89//OOELL)+ **F3''/(('2''1	
	 !* 	,Hf{{X%')f.@.@.B#HAcU+C	, 
r<   c                     | j                  | j                               r!| j                          | j                          y y rJ   )_set_device_pixel_ratioget_scale_factorqueue_resize
queue_drawr1   argskwargss      r3   rf   z+FigureCanvasGTK3._update_device_pixel_ratio   s9     ''(=(=(?@ OO Ar<   c                    |j                  d      y |j                  | j                  z  }|j                  | j                  z  }|dk  s|dk  ry | j                  j
                  }| j                  j                  ||z  ||z  d       y)Nrz      Fr   )r{   r   r   r   rU   r   r   )r1   r   r   whr   s         r3   rY   z FigureCanvasGTK3.configure_event   s    x(0KK$111LL4222q5AEkkoo##AGQWe#Dr<   c                 2    || _         | j                          y rJ   )rd   r   )r1   rects     r3   _draw_rubberbandz!FigureCanvasGTK3._draw_rubberband   s     $r<   c                      j                   y  fd j                   D        \  }}}}||z   }||z   }|j                  ||       |j                  ||       |j                  ||       |j                  ||       |j                  ||       |j                  ||       |j                  ||       |j                  ||       |j                  d       |j	                  d       |j                  dd       |j                  ddd       |j                          |j                  dd       |j                  ddd       |j                          y )Nc              3   <   K   | ]  }|j                   z    y wrJ   )r   ).0dimr1   s     r3   	<genexpr>z.FigureCanvasGTK3._post_draw.<locals>.<genexpr>   s$      : d555 :s   r   )r   r   r   r   )	rd   move_toline_toset_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke)	r1   r   ctxx0y0r   r   x1y1s	   `        r3   rh   zFigureCanvasGTK3._post_draw   s$     (:#'#8#8:B1!V!V 	BBBBBBBB!1VQ1a#VQ1a#

r<   c                      y rJ   rH   )r1   r   r   s      r3   rg   zFigureCanvasGTK3.on_draw_event  s    r<   c                 F    | j                         r| j                          y y rJ   )is_drawabler   r:   s    r3   rZ   zFigureCanvasGTK3.draw  s    OO r<   c                 d      j                   dk7  ry  fd}t        j                  |       _         y )Nr   c                  N    	 j                          d_        y# d_        w xY w)Nr   F)rZ   rc   )r   r1   s    r3   	idle_drawz-FigureCanvasGTK3.draw_idle.<locals>.idle_draw"  s(    '		%&" &'"s    	$)rc   r   idle_add)r1   r   s   ` r3   r   zFigureCanvasGTK3.draw_idle  s,    "	 "]]95r<   c                     t         j                  j                         }|j                         r#|j	                  d       |j                         r"y y )NT)r   r}   r"   pendingr~   )r1   r   s     r3   flush_eventszFigureCanvasGTK3.flush_events*  s:    ""**,ood# oor<   rJ   ),rB   rC   rD   required_interactive_framework	TimerGTK3
_timer_clsr   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_MASKrk   rb   rx   r|   r   rV   rW   rX   r[   r\   r]   r^   r_   r`   r   rf   rY   r   rh   rg   rZ   r   r   __classcell__)rj   s   @r3   rO   rO   H   s<   %+"J&D&&'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"

<

6$r<   rO   c                       e Zd Z ej                  dd      dd       Z  ej                  d       ed             Zd Z	y)NavigationToolbar2GTK3r5   rz   Nc                    || _         t        j                  j                  |        | j                  t        j
                  j                         i | _        | j                  D ]E  \  }}}}|%| j                  t	        j                         d       0t        j                  j                  t        j                  j                  t!        t#        j$                  d| d                  t        j&                  j(                        }|dv rt	        j*                         nt	        j,                         x| j                  |<   }|j/                  |       |j1                  |       |j3                  dt5        | |            |_        |j9                  |       | j                  |d       H t	        j:                         }	| j                  |	d       t	        j<                         }
|
j?                  d       |	jA                  d       |	jC                  |
       t	        j:                         }	| j                  |	d       t	        j<                         | _"        | jD                  jG                  t        jH                  jJ                         |	jC                  | jD                         | jM                          tO        j                  | |       y )Nr   r>   -symbolic.svg)zoompanclickedu   <small> 
 </small>T)(_winr   rb   	set_styler   ToolbarStyleICONS_gtk_ids	toolitemsinsertSeparatorToolItemImagenew_from_giconr   Iconnew_for_stringr@   r   rA   IconSizeLARGE_TOOLBARToggleToolButton
ToolButton	set_labelset_icon_widgetre   getattr_signal_handlerset_tooltip_textToolItemLabel
set_markup
set_expandaddmessageset_justifyJustificationRIGHTshow_allr   )r1   canvasrz   texttooltip_text
image_filecallbackimager   toolitemlabels              r3   rb   zNavigationToolbar2GTK3.__init__2  s   	  &s''--.8< 	$4D,
H|C113R8II,,'',,X0:|=-IK LM **	,E +3o*E$$& "DMM$& T"""5)%+^^742&4F"##L1KK#%	$0 <<>Hb!		C	ED!U<<>Hb!yy{  !2!2!8!89T\\"''f5r<   c                     | j                   S rJ   )r  r:   s    r3   r;   zNavigationToolbar2GTK3.<lambda>d  s
    tyy r<   c           	         
 t        j                  d j                  j                         t         j                  j
                  t         j                  t         j                  j                  t         j                  t         j                  j                  f      
 j                  j                         j                         D ]  \  }}t        j                         }|j                  |       |D ]  }|j                  d|         
j!                  |        j                  j#                         |v st
j%                  |        t'        j(                  
j*                  d      
 fd       }
j-                  t.        j0                  d          
j3                   j                  j5                                
j7                  d       
j9                         }
j;                         }
j=                         } j                  j                         |j?                            d   }
jA                          |t         j                  j                  k7  ry t.        j0                  d   r0tB        jD                  jG                  |      t.        j0                  d<   	  j                  jH                  jK                  ||	       y # tL        $ r}	t        jN                   j                  j                         tQ        |	      t         jR                  jT                  t         jV                  j                  
      

j9                          
jA                          Y d }	~	y d }	~	ww xY w)NzSave the figure)titleparentactionbuttonsz*.znotify::filterc                     j                         j                         }j                  j                         |   d   }j	                  t        t        j                               j                  d|                    y )Nr   .)	
get_filterget_namer*  get_supported_filetypes_groupedset_current_namer@   r   get_current_namewith_suffix)r   namefmtdialogr1   s      r3   on_notify_filterz<NavigationToolbar2GTK3.save_figure.<locals>.on_notify_filterx  sl    $$&//1D++==?EaHC##D0023??!C5	JKMr<   zsavefig.directoryTr   )format)r5  message_formattyper7  ),r   FileChooserDialogr*  get_toplevelFileChooserActionSAVESTOCK_CANCELResponseTypeCANCEL
STOCK_SAVEOKr<  items
FileFilterset_nameadd_pattern
add_filterget_default_filetype
set_filterr%   r&   re   set_current_foldermplrcParamsr=  get_default_filenameset_do_overwrite_confirmationrunget_filenamer:  r;  rx   ospathdirnamerU   savefig	ExceptionMessageDialogr@   MessageTypeERRORButtonsType)r1   r   r@  fmtsffrA  rC  responsefnameerB  s   `         @r3   save_figurez"NavigationToolbar2GTK3.save_figuref  s   &&#;;++-((--%%s'7'7'>'>^^s'7'7':':<	
 ;;>>@FFH	&JD$!BKK +C5z*+b!{{//1T9!!"%	& 
		6>>+;	<	M 
=	M 	!!#,,/B"CD @ @ BC,,T2::<##% kk99;BKKMJ1Ms''***<<+,020FCLL,-	KK&&uS&9 	&&{{//1#a&__**COO4F4FHF JJLNN	s    'K 	M%B
M  M%rJ   )
rB   rC   rD   r   delete_parameterrb   rE   rF   winrl  rH   r<   r3   r  r  1  sH    T5(+/6 ,/6b !/$//%
 *@!A
BC.r<   r  c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)ToolbarGTK3r  c                    t        j                  | |       t        j                  j                  |        | j	                  dt        j
                  j                         t        j                         | _        | j                  j                  t        j                  j                         | j                  | j                  ddd       | j                          i | _        i | _        y )NorientationFr   )r   rb   r   Boxset_propertyOrientation
HORIZONTALr!  _messager&  r'  r(  pack_endr)  _groups
_toolitems)r1   toolmanagers     r3   rb   zToolbarGTK3.__init__  s    ""45-)C)CD		!!#"3"3"9"9:dmmUE15r<   c                 n   |rt        j                         }nt        j                         }|j                  |       |ft         j                  j                  t        j                  j                  |      t         j                  j                        }|j                  |       |d}| j                  |||       |j                  d| j                  |      }	|j                  |       |j!                          | j"                  j%                  |g        | j"                  |   j'                  ||	f       y )Nr   r
  )r   r  r  r  r  r  r   r  r  r  r  r  _add_buttonre   
_call_toolr  r)  rz  
setdefaultappend)
r1   r@  grouppositionr-  descriptiontoggler   r/  signals
             r3   add_toolitemzToolbarGTK3.add_toolitem  s    ))+F^^%F!II,,''
3**,E ""5)H1	4??DA,""4,$$ff%56r<   c                 v   || j                   vr| j                   r| j                          t        j                         }|j	                  t        j
                  j                         | j                  |ddd       |j                          || j                   |<   | j                   |   j                  ||       y )NFr   )
ry  _add_separatorr   Toolbarr  r  r  
pack_startr)  r  )r1   r   r  r  toolbars        r3   r}  zToolbarGTK3._add_button  s    $||##%kkmGc..445OOGUE15")DLLU""684r<   c                 &    | j                  |       y rJ   )trigger_tool)r1   btnr@  s      r3   r~  zToolbarGTK3._call_tool  s    $r<   c                     || j                   vry | j                   |   D ]8  \  }}|j                  |       |j                  |       |j                  |       : y rJ   )rz  handler_block
set_activehandler_unblock)r1   r@  toggledr0  r  s        r3   toggle_toolitemzToolbarGTK3.toggle_toolitem  sX    t& $ 5 	-Hf""6*($$V,	-r<   c                 *   || j                   vr | j                  j                  | d|        y | j                  D ]I  }| j                   |   D ]5  \  }}|| j                  |   v s| j                  |   j	                  |       7 K | j                   |= y )Nz not in toolbar)rz  r{  message_eventry  remove)r1   r@  r  r0  _signals        r3   remove_toolitemzToolbarGTK3.remove_toolitem  s    t&**dV?+CTJ\\ 	9E%)__T%: 9!'t||E22LL'..x89	9 OOD!r<   c                     t        j                         }|j                  dt         j                  j                         | j                  |ddd       |j                          y )Nrr  FTr   )r   	Separatorrt  ru  VERTICALr  r)  )r1   seps     r3   r  zToolbarGTK3._add_separator  sB    mmo(@(@AUD!,r<   c                 :    | j                   j                  |       y rJ   )rw  r  )r1   ss     r3   set_messagezToolbarGTK3.set_message  s    "r<   N)rB   rC   rD   _icon_extensionrb   r  r}  r~  r  r  r  r  rH   r<   r3   rp  rp    s/    %O	70	5 -	"#r<   rp  c                       e Zd Zd Zy)SaveFigureGTK3c                 J    t         j                  | j                                y rJ   )r  rl  "_make_classic_style_pseudo_toolbarr   s      r3   triggerzSaveFigureGTK3.trigger  s    **335	7r<   NrB   rC   rD   r  rH   r<   r3   r  r    s    7r<   r  r   ToolSetCursor)alternativec                       e Zd Zd Zy)SetCursorGTK3c                 L    t         j                  | j                         |       y rJ   )r  r|   r  )r1   r   s     r3   r|   zSetCursorGTK3.set_cursor  s    ))335v	?r<   N)rB   rC   rD   r|   rH   r<   r3   r  r    s    ?r<   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)HelpGTK3c                    ddddd}|j                  d      }|dd D cg c]
  }d	|z   d
z    }}|d   }||v r||   }n5t        |      dkD  r|j                         }n|j                         r|dgz  }dj	                  |      |z   S c c}w )z
        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   Nr   <>r   z<shift>r   )splitlen
capitalizeisupperjoin)r1   r   specialpartsmodmodss         r3   _normalize_shortcutzHelpGTK3._normalize_shortcut  s     %#(	
 		#+0":6Cc	C66Bi'>#,CX\.."C[[]YKDwwt}s"" 7s   B	c                 2    d|vxr |j                  d       S )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)r1   r   s     r3   _is_valid_shortcutzHelpGTK3._is_valid_shortcut  s      S G)G%GGr<   c           	          t        j                         }t         j                  j                  j                               D ]  \  }}|j                  st        j                         }|j                  |       |j                  d d        t        j                  dj                   fd j                  j                  |      D              |j                  |j                        }|j                  |        t        j                  dd j                  j                   j#                               }|j%                          |j                  |       |j'                          y )Nc                 $    | j                  d      S )NF)set_visible)r   datas     r3   r;   z1HelpGTK3._show_shortcuts_window.<locals>.<lambda>)  s    f.@.@.G r<    c              3   b   K   | ]&  }j                  |      rj                  |       ( y wrJ   )r  r  )r   r   r1   s     r3   r   z2HelpGTK3._show_shortcuts_window.<locals>.<genexpr>,  s2      %5..s3 ,,S1%5s   ,/)acceleratorr4  subtitleHelpT)r4  modaltransient_for)r   ShortcutsSectionsortedr{  toolsrP  r  ShortcutsGroupr$  forallShortcutsShortcutr  get_tool_keymapr@  ShortcutsWindow_figurer*  rH  showr)  )r1   sectionr@  toolr  shortcutrz   s   `      r3   _show_shortcuts_windowzHelpGTK3._show_shortcuts_window  s   &&( !1!1!7!7!=!=!?@ 	 JD$## &&(EKKLLGN,,HH %5#//??E%5 5 ii))+H IIh)	 , $$,,--::<> 	

7r<   c                 :   t        j                  | j                  j                  j	                         dt         j
                  j                  t         j                  j                  | j                         d      }|j                          |j                          y )Nr   r  )r4  )r   rc  r  r*  rH  rd  INFOrf  rO  _get_help_textr\  rx   )r1   rB  s     r3   _show_shortcuts_dialogzHelpGTK3._show_shortcuts_dialog=  sf    ""LL,,.s##S__%7%79L9L9N 	

r<   c                 t    t        j                  ddd      | j                          y | j                          y )Nr      r   )r   check_versionr  r  )r1   r   s     r3   r  zHelpGTK3.triggerE  s/    QA&.'')'')r<   N)rB   rC   rD   r  r  r  r  r  rH   r<   r3   r  r    s    #4H D*r<   r  c                       e Zd Zd Zy)ToolCopyToClipboardGTK3c                    t         j                  j                  t        j                        }| j
                  j                         }|j                         \  }}}}t        j                  |||||      }	|j                  |	       y rJ   )
r   	Clipboardgetr   SELECTION_CLIPBOARDr*  r   get_geometrypixbuf_get_from_window	set_image)
r1   r   r   	clipboardrz   r   r   r   r   pbs
             r3   r  zToolCopyToClipboardGTK3.triggerN  sk    MM%%c&=&=>	'')$1131eV''1eVDBr<   Nr  rH   r<   r3   r  r  L  s     r<   r  r5   c                 |   |"|j                         }|j                         sd }t        | t              sdj	                  t        t        |             } t        j                  |t        j                  j                  t        j                  j                  |       }|j                          |j                          y )N,)r5  rF  r7  rE  )rH  is_toplevel
isinstancer@   r  mapr   rc  rd  re  rf  rO  r\  rx   )msgr5  rB  s      r3   error_msg_gtkr  V  s    $$&!!#Fc3hhs3}%COO113??;M;MF JJL
NNr<   c                       e Zd ZeZeZy)rR   N)rB   rC   rD   r  _toolbar2_classrp  _toolmanager_toolbar_classrH   r<   r3   rR   rR   l  s    ,O!,r<   rR   c                       e Zd ZeZeZy)_BackendGTK3N)rB   rC   rD   rO   FigureCanvasrR   FigureManagerrH   r<   r3   r  r  q  s    #L%Mr<   r  rJ   )Er%   loggingr^  pathlibr   r8   
matplotlibrX  r   r   r   matplotlib.backend_basesr   r   r	   r
   r   r   r   matplotlib.backend_toolsr   giImportErrorerrrequire_version
ValueErrorrk  gi.repositoryr   r   r   r   r   r   r   r   r   r   r   r   	getLoggerrB   _logcaching_module_getattrr   	lru_cacherM   DrawingArearO   r  r  rs  rp  _register_tool_classSaveFigureBaser  rE   SetCursorBaser  ToolHelpBaser  ToolCopyToClipboardBaser  r  ConfigureSubplotsGTKRubberbandGTKrR   exportr  rH   r<   r3   <module>r     s     	  
  1 1B B B -F Bue$ 7 6   w" L L L2 9 9f$' f$Rc3S[[ cLN##SWW N#b $##$457]11 7 67 O4?M// ? 5? $##$45R*})) R* 6R*j $##$45 mCC   6     " " "l779 " " "l002-) -
 &; & &E  F
;
<#EF   1s/   H H5 H2$	H--H25I:H==I