
    EVf-U                        d dl Z d dlZd dlZd dlm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 	 d dlZ	  ej(                  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"m#Z$  ejJ                  e&      Z'e jP                  d        Z) G d de ejT                        Z+ G d de"ejX                        Z- G d deej\                        Z/ ej`                  e+       G d dejb                               Z2 ej`                  e+       G d dejf                               Z4 ej`                  e+       G d dejj                               Z6e/Z, ej`                  e+ejn                          ej`                  e+ejp                          G d de!      Z9ejt                   G d de             Z;y# e$ rZ ed      edZ[ww xY w# e$ rZ ee      edZ[ww xY w)    N)Path)_apibackend_toolscbook)ToolContainerBase
CloseEventKeyEventLocationEvent
MouseEventResizeEventz#The GTK3 backends require PyGObjectGtkz3.0)GioGLibGObjectr   Gdk   )_backend_gtk)_BackendGTK_FigureCanvasGTK_FigureManagerGTK_NavigationToolbar2GTKTimerGTKc                     t         j                  j                  t         j                  j	                         t        j                  |             S N)r   Cursornew_from_nameDisplayget_defaultr   mpl_to_gtk_cursor_name)
mpl_cursors    i/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/backends/backend_gtk3.py_mpl_to_gtk_cursorr"   %   s7    ::##!++J79 9    c                   |    e Zd Zd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e dd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 r   )FigureManagerGTK3)clss    r!   <lambda>zFigureCanvasGTK3.<lambda>.   s    3D r#   Nc                    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connectr-   r.   r/   r0   _update_device_pixel_ratioon_draw_event
_post_drawr2   r3   r4   r5   r6   r7   
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_ctxrA   s       r!   r9   z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    t        d|       j                          y )Nclose_event)r   _processrJ   s    r!   destroyzFigureCanvasGTK3.destroyZ   s    =$'002r#   c                     | j                  d      }|J|j                  t        |             t        j                  j                         }|j                  d       y y )NwindowT)get_property
set_cursorr"   r   MainContextdefault	iteration)rJ   cursorrS   contexts       r!   rU   zFigureCanvasGTK3.set_cursor]   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_ratior,   bboxheight)rJ   eventrS   tra   rb   states          r!   _mpl_coordszFigureCanvasGTK3._mpl_coordse   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                  |      || j                  |j                        |dj                          y)Nr   r-   )step	modifiersguiEventF)		directionr   ScrollDirectionUPr   ri   _mpl_modifiersrh   rO   )rJ   widgetrf   rl   s       r!   r-   zFigureCanvasGTK3.scroll_event{   sh    OOs':':'='==q2>4 	#$$U+	#26!00=!	# $,8:r#   c                     t        d| g| j                  |      |j                  | j                  |j                        |dj                          y)Nr.   rm   rn   Fr   ri   buttonrr   rh   rO   rJ   rs   rf   s      r!   r.   z#FigureCanvasGTK3.button_press_event   sT    ' 	#$$U+	#-2\\	#!00=!	# $,8:r#   c                     t        d| g| j                  |      |j                  | j                  |j                        |dj                          y)Nr/   ru   Frv   rx   s      r!   r/   z%FigureCanvasGTK3.button_release_event   sT    )4 	#$$U+	#-2\\	#!00=!	# $,8:r#   c                 |    t        d| | j                  |      g| j                         d|ij                          y)Nr2   rn   Tr	   _get_keyri   rO   rx   s      r!   r2   z FigureCanvasGTK3.key_press_event   s>    "Du%	!(,(8(8(:	!	!!)r#   c                 |    t        d| | j                  |      g| j                         d|ij                          y)Nr3   rn   Tr{   rx   s      r!   r3   z"FigureCanvasGTK3.key_release_event   s>    $du%	!(,(8(8(:	!	!!)r#   c                     t        d| g| j                  |      | j                  |j                        |dj	                          y)Nr4   ru   F)r   ri   rr   rh   rO   rx   s      r!   r4   z$FigureCanvasGTK3.motion_notify_event   sE    ($ 	#1A1A%1H 	#!00=!	##+8:r#   c                     t         j                  j                  | j                               j	                         }t        d| g| j                  |      | j                  |      |dj                          y )Nfigure_enter_eventru   	r   Keymapget_for_displayr^   get_modifier_stater
   ri   rr   rO   rJ   rs   rf   gtk_modss       r!   r5   z#FigureCanvasGTK3.enter_notify_event   j    ::--  2 2 4 	*D 	&43C3CE3J 	& $ 3 3H =$	&&.hjr#   c                     t         j                  j                  | j                               j	                         }t        d| g| j                  |      | j                  |      |dj                          y )Nfigure_leave_eventru   r   r   s       r!   r6   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)	r,   dpiwidthrc   re   set_size_inchesr   rO   	draw_idle)rJ   rs   
allocationdpivalwinchhinchs         r!   r7   zFigureCanvasGTK3.size_allocate   s{      4#:#::VC!!D$;$;;fD##E5%#@ND)224r#   excludec                8   dt         j                  j                  dfdt         j                  j                  dfdt         j                  j                  dfdt         j                  j
                  dfg}|D cg c]  \  }}}||k7  r| |z  r| c}}}S c c}}}w )Nctrlcontrolaltshiftr8   )r   ModifierTypeCONTROL_MASK	MOD1_MASK
SHIFT_MASK	MOD4_MASK)event_stater   rm   namemaskkeys         r!   rr   zFigureCanvasGTK3._mpl_modifiers   s     S%%22I>C$$..6c&&117;c&&00':	
	 -6 : :tSc>kD&8  : 	: :s   9Bc                 f   t        t        j                  |j                              }t	        j
                  |t        j                  |j                              }| j                  |j                  |      }d|v r!|j                         r|j                  d       dj                  g ||      S )Nr   r   +)chrr   keyval_to_unicodekeyvalr   _unikey_or_keysym_to_mplkeykeyval_namerr   rh   isprintableremovejoin)rJ   rf   unikeyr   modss        r!   r|   zFigureCanvasGTK3._get_key   s    S**5<<89//COOELL13""5;;"<d?v113KK xx$%%r#   c                     | j                  | j                               r!| j                          | j                          y y r   )_set_device_pixel_ratioget_scale_factorqueue_resize
queue_drawrJ   argskwargss      r!   r=   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)NrS      Fr   )rT   r   rc   re   r,   r   r   )rJ   rs   rf   whr   s         r!   r0   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 r   )r;   r   )rJ   rects     r!   _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r   )rc   ).0dimrJ   s     r!   	<genexpr>z.FigureCanvasGTK3._post_draw.<locals>.<genexpr>   s$      : d555 :s   r   )r   r   r   r   )	r;   move_toline_toset_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke)	rJ   rs   ctxx0y0r   r   x1y1s	   `        r!   r?   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 r    )rJ   rs   r   s      r!   r>   zFigureCanvasGTK3.on_draw_event  s    r#   c                 F    | j                         r| j                          y y r   )is_drawabler   rP   s    r!   r1   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)r1   r:   )r   rJ   s    r!   	idle_drawz-FigureCanvasGTK3.draw_idle.<locals>.idle_draw  s(    '		%&" &'"s    	$)r:   r   idle_add)rJ   r   s   ` r!   r   zFigureCanvasGTK3.draw_idle  s,    "	 "]]95r#   c                     t         j                  j                         }|j                         r#|j	                  d       |j                         r"y y )NT)r   rV   rW   pendingrX   )rJ   rZ   s     r!   flush_eventszFigureCanvasGTK3.flush_events  s:    ""**,ood# oor#   r   ),__name__
__module____qualname__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_MASKrB   r9   rQ   rU   ri   r-   r.   r/   r2   r3   r4   r5   r6   r7   staticmethodrr   r|   r=   r0   r   r?   r>   r1   r   r   __classcell__)rA   s   @r!   r%   r%   ,   sN   %+"&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 /3 : :&

<

6$r#   r%   c                       e Zd Zd Zd Zy)NavigationToolbar2GTK3c                    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-                  |       |j/                  |       |j1                  dt3        | |            |_        |j7                  |       | j                  |d       H t        j8                         }| j                  |d       t        j:                         }	|	j=                  d       |j?                  d       |jA                  |	       t        j8                         }| j                  |d       t        j:                         | _!        | jB                  jE                  t        jF                  jH                         |jA                  | jB                         | jK                          tM        j                  | |       y )Nrk   images-symbolic.svg)zoompanclickedu   <small> 
 </small>T)'r   r9   	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JustificationRIGHTshow_allr   )
rJ   canvastexttooltip_text
image_filecallbackimagerw   toolitemlabels
             r!   r9   zNavigationToolbar2GTK3.__init__#  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           	         
 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   r   fmtdialogrJ   s      r!   on_notify_filterz<NavigationToolbar2GTK3.save_figure.<locals>.on_notify_filtere  sl    $$&//1D++==?EaHC##D0023??!C5	JKMr#   zsavefig.directoryTr   )format)r"  message_formattyper$  ),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_filter	functoolspartialr<   set_current_foldermplrcParamsr*  get_default_filenameset_do_overwrite_confirmationrunget_filenamer'  r(  rQ   ospathdirnamer,   savefig	ExceptionMessageDialogr  MessageTypeERRORButtonsType)rJ   r   r   fmtsffr-  r/  responsefnameer.  s   `         @r!   save_figurez"NavigationToolbar2GTK3.save_figureS  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%N)r   r   r   r9   rZ  r   r#   r!   r   r   "  s    .6`.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   r9   r   Boxset_propertyOrientation
HORIZONTALr  _messager  r  r  pack_endr  _groups
_toolitems)rJ   toolmanagers     r!   r9   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 )Nrk   r   )r   r  r  r	  r   r   r   r  r  r  r  r
  _add_buttonr<   
_call_toolr  r  rf  
setdefaultappend)
rJ   r   grouppositionr  descriptiontogglerw   r  signals
             r!   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   )
re  _add_separatorr   Toolbarr   r   r   
pack_startr  r   )rJ   rw   rm  rn  toolbars        r!   ri  zToolbarGTK3._add_button  s    $||##%kkmGc..445OOGUE15")DLLU""684r#   c                 &    | j                  |       y r   )trigger_tool)rJ   btnr   s      r!   rj  zToolbarGTK3._call_tool  s    $r#   c                     || j                   vry | j                   |   D ]8  \  }}|j                  |       |j                  |       |j                  |       : y r   )rf  handler_block
set_activehandler_unblock)rJ   r   toggledr  rq  s        r!   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)rf  rg  message_eventre  r   )rJ   r   rm  r  _signals        r!   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 )Nr^  FTr   )r   	Separatorr`  ra  VERTICALrv  r  )rJ   seps     r!   rt  zToolbarGTK3._add_separator  sB    mmo(@(@AUD!,r#   c                 :    | j                   j                  |       y r   )rc  r	  )rJ   ss     r!   set_messagezToolbarGTK3.set_message  s    "r#   N)r   r   r   _icon_extensionr9   rr  ri  rj  r  r  rt  r  r   r#   r!   r\  r\    s/    %O	70	5 -	"#r#   r\  c                       e Zd Zd Zy)SaveFigureGTK3c                 J    t         j                  | j                                y r   )r   rZ  "_make_classic_style_pseudo_toolbarr   s      r!   triggerzSaveFigureGTK3.trigger  s    **335	7r#   Nr   r   r   r  r   r#   r!   r  r    s    7r#   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   Nrk   <>r   z<shift> )splitlen
capitalizeisupperr   )rJ   r   specialpartsmodr   s         r!   _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)rJ   r   s     r!   _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)rs   datas     r!   r*   z1HelpGTK3._show_shortcuts_window.<locals>.<lambda>  s    f.@.@.G r#    c              3   b   K   | ]&  }j                  |      rj                  |       ( y wr   )r  r  )r   r   rJ   s     r!   r   z2HelpGTK3._show_shortcuts_window.<locals>.<genexpr>  s2      %5..s3 ,,S1%5s   ,/)acceleratorr!  subtitleHelpT)r!  modaltransient_for)r   ShortcutsSectionsortedrg  toolsr<  ro  ShortcutsGroupr  forallShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurer  r4  showr  )rJ   sectionr   toolrm  shortcutrS   s   `      r!   _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  )r!  )r   rQ  r  r  r4  rR  INFOrT  r;  _get_help_textrJ  rQ   )rJ   r.  s     r!   _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  )rJ   r   s     r!   r  zHelpGTK3.trigger+  s/    QA&.'')'')r#   N)r   r   r   r  r  r  r  r  r   r#   r!   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 r   )
r   	Clipboardgetr   SELECTION_CLIPBOARDr  r\   get_geometrypixbuf_get_from_window	set_image)
rJ   r   r   	clipboardrS   ra   rb   r   re   pbs
             r!   r  zToolCopyToClipboardGTK3.trigger4  sk    MM%%c&=&=>	'')$1131eV''1eVDBr#   Nr  r   r#   r!   r  r  2  s     r#   r  c                       e Zd ZeZeZy)r(   N)r   r   r   r   _toolbar2_classr\  _toolmanager_toolbar_classr   r#   r!   r(   r(   C  s    ,O!,r#   r(   c                       e Zd ZeZeZy)_BackendGTK3N)r   r   r   r%   FigureCanvasr(   FigureManagerr   r#   r!   r  r  H  s    #L%Mr#   r  )<rC  loggingrL  pathlibr   
matplotlibrF  r   r   r   matplotlib.backend_basesr   r   r	   r
   r   r   giImportErrorerrrequire_version
ValueErrorrY  gi.repositoryr   r   r   r   r   r  r   r   r   r   r   r   	TimerGTK3	getLoggerr   _logcacher"   DrawingArear%   ru  r   r_  r\  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser  ConfigureSubplotsGTKRubberbandGTKr(   exportr  r   r#   r!   <module>r     s     	   1 1 F  Bue$ 7 6   w" 9 9s$' s$l_3S[[ _DN##SWW N#b $##$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-) -
 &; & &w  F
;
<#EF    a.a s.   F2 G 2G7	G  GG	GG