
    P/PhW                        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mZ 	 d dlZn# e$ rZ ed          edZ[ww xY w	  ej        dd           n# e$ rZ ee          edZ[ww xY w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j&        e'          Z(e j)        d             Z* G d de!ej+                  Z, G d de#ej-                  Z. G d deej/                  Z0 ej1        e,           G d dej2                              Z3 ej1        e,           G d dej4                              Z5 ej1        e,           G d dej6                              Z7e0Z- ej1        e,ej8                    ej1        e,ej9                    G d de"          Z:e j;         G d de                       Z<dS )    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                     t           j                            t           j                                        t          j        |                     S N)r   Cursornew_from_nameDisplayget_defaultr   mpl_to_gtk_cursor_name)
mpl_cursors    `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/backends/backend_gtk3.py_mpl_to_gtk_cursorr#   %   s;    :##!!+J779 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             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 | _        |                     d| j                   |                     d| j                   |                     d| j                   |                     d| j                   |                     d| j	                   |                     d| j	                   |                     d	| j
                   |                     d	| j                   |                     d
| j                   |                     d| j                   |                     d| j                   |                     d| j                   |                     d| j                   |                     d| j                   |                     | j        j                   |                     d           t-          j                    }|                    d           |                                 }|                    |t,          j                   |                    d           d S )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/   r0   r1   _update_device_pixel_ratioon_draw_event
_post_drawr3   r4   r5   r6   r7   r8   
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_ctxrB   s       r"   r:   zFigureCanvasGTK3.__init__;   s   ''' $^T->???)T-DEEE+T-FGGG&T-ABBB%T-LMMM+T-LMMMVT-?@@@VT_===&T-ABBB(T-CDDD*T-EFFF)T-DEEE)T-DEEE_T-?@@@12224   oMNNN**,,	sC$KLLL/00000r$   c                 J    t          d|                                            d S )Nclose_event)r	   _processrK   s    r"   destroyzFigureCanvasGTK3.destroyZ   s$    =$''0022222r$   c                     |                      d          }|W|                    t          |                     t          j                                        }|                    d           d S d S )NwindowT)get_property
set_cursorr#   r   MainContextdefault	iteration)rK   cursorrT   contexts       r"   rV   zFigureCanvasGTK3.set_cursor]   sn    ""8,,088999&..00Gd##### r$   c                 @   |e|                                  }|                    |                                                                                                          \  }}}}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)rK   eventrT   trb   rc   states          r"   _mpl_coordszFigureCanvasGTK3._mpl_coordse   s     =__&&F#77""$$7799LLNNP PNAq!UU 7EGqA''K#a$*A&AA!tr$   c                     |j         t          j        j        k    rdnd}t	          d| g|                     |          R ||                     |j                  |d                                 dS )Nr   r.   )step	modifiersguiEventF)		directionr   ScrollDirectionUPr   rj   _mpl_modifiersri   rP   )rK   widgetrg   rm   s       r"   r.   zFigureCanvasGTK3.scroll_event{   s~    Os':'===qq2>4 	#$$U++	# 	#26!00==!	# 	# 	# $,8:::ur$   c                     t          d| g|                     |          |j        R |                     |j                  |d                                 dS )Nr/   rn   ro   Fr   rj   buttonrs   ri   rP   rK   rt   rg   s      r"   r/   z#FigureCanvasGTK3.button_press_event   sk    ' 	#$$U++	#-2\	# 	#!00==!	# 	# 	# $,8:::ur$   c                     t          d| g|                     |          |j        R |                     |j                  |d                                 dS )Nr0   rv   Frw   ry   s      r"   r0   z%FigureCanvasGTK3.button_release_event   sk    )4 	#$$U++	#-2\	# 	#!00==!	# 	# 	# $,8:::ur$   c                     t          d| |                     |          g|                                 R d|i                                 dS )Nr3   ro   Tr
   _get_keyrj   rP   ry   s      r"   r3   z FigureCanvasGTK3.key_press_event   sY    "Du%%	!(,(8(8(:(:	! 	! 	!	! 	!!)tr$   c                     t          d| |                     |          g|                                 R d|i                                 dS )Nr4   ro   Tr|   ry   s      r"   r4   z"FigureCanvasGTK3.key_release_event   sY    $du%%	!(,(8(8(:(:	! 	! 	!	! 	!!)tr$   c                     t          d| g|                     |          R |                     |j                  |                     |j                  |d                                 dS )Nr5   )buttonsrn   ro   F)r   rj   _mpl_buttonsri   rs   rP   ry   s      r"   r5   z$FigureCanvasGTK3.motion_notify_event   ss    ($ 	#1A1A%1H1H 	# 	#,,U[99!00==!	# 	# 	# $,8:::ur$   c                     t           j                            |                                                                           }t          d| g|                     |          R |                     |          |d                                 d S )Nfigure_enter_eventrv   	r   Keymapget_for_displayr_   get_modifier_stater   rj   rs   rP   rK   rt   rg   gtk_modss       r"   r6   z#FigureCanvasGTK3.enter_notify_event       :--    2 2 4 4 	*D 	&43C3CE3J3J 	& 	& $ 3 3H = =$	& 	& 	&&.hjjjjjr$   c                     t           j                            |                                                                           }t          d| g|                     |          R |                     |          |d                                 d S )Nfigure_leave_eventrv   r   r   s       r"   r7   z#FigureCanvasGTK3.leave_notify_event   r   r$   c                    | j         j        }|j        | j        z  |z  }|j        | j        z  |z  }| j                             ||d           t          d|                                            |                                  d S )NFforwardresize_event)	r-   dpiwidthrd   rf   set_size_inchesr   rP   	draw_idle)rK   rt   
allocationdpivalwinchhinchs         r"   r8   zFigureCanvasGTK3.size_allocate   s     4#::VC!D$;;fD##E5%#@@@ND))22444r$   c                 <    t           j        t          j        j        ft           j        t          j        j        ft           j        t          j        j        ft           j	        t          j        j
        ft           j        t          j        j        fg} fd|D             S )Nc                 $    g | ]\  }}|z  
|S  r   ).0namemaskevent_states      r"   
<listcomp>z1FigureCanvasGTK3._mpl_buttons.<locals>.<listcomp>   s'    GGGtK$4FGGGGr$   )r   LEFTr   ModifierTypeBUTTON1_MASKMIDDLEBUTTON2_MASKRIGHTBUTTON3_MASKBACKBUTTON4_MASKFORWARDBUTTON5_MASK)r   rn   s   ` r"   r   zFigureCanvasGTK3._mpl_buttons   s~     s/<=!1!>? 0 =>s/<= #"2"?@
	 HGGGyGGGGr$   excludec                     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} fd|D             S )Nctrlcontrolaltshiftr9   c                 2    g | ]\  }}}|k    |z  |S r   r   )r   r   r   keyr   r   s       r"   r   z3FigureCanvasGTK3._mpl_modifiers.<locals>.<listcomp>   s8     : : :tSc>>kD&8> !>>r$   )r   r   CONTROL_MASK	MOD1_MASK
SHIFT_MASK	MOD4_MASK)r   r   rn   s   `` r"   rs   zFigureCanvasGTK3._mpl_modifiers   s|     S%2I>C$.6c&17;c&0':	
	: : : : :I : : : 	:r$   c                 j   t          t          j        |j                            }t	          j        |t          j        |j                            }|                     |j        |          }d|v r)|	                                r|
                    d           d                    g ||          S )Nr   r   +)chrr   keyval_to_unicodekeyvalr   _unikey_or_keysym_to_mplkeykeyval_namers   ri   isprintableremovejoin)rK   rg   unikeyr   modss        r"   r}   zFigureCanvasGTK3._get_key   s    S*5<8899/COEL113 3""5;"<<d??v1133?KK   xx$%%%r$   c                     |                      |                                           r*|                                  |                                  d S d S r   )_set_device_pixel_ratioget_scale_factorqueue_resize
queue_drawrK   argskwargss      r"   r>   z+FigureCanvasGTK3._update_device_pixel_ratio   sZ     ''(=(=(?(?@@ 	 OO	 	r$   c                     |                     d          d S |j        | j        z  }|j        | j        z  }|dk     s|dk     rd S | j        j        }| j                            ||z  ||z  d           dS )NrT      Fr   )rU   r   rd   rf   r-   r   r   )rK   rt   rg   whr   s         r"   r1   z FigureCanvasGTK3.configure_event   s    x((0FK$11L422q55AEEFko##AGQWe#DDDur$   c                 <    || _         |                                  d S r   )r<   r   )rK   rects     r"   _draw_rubberbandz!FigureCanvasGTK3._draw_rubberband   s      $r$   c                      j         d S  fd j         D             \  }}}}||z   }||z   }|                    ||           |                    ||           |                    ||           |                    ||           |                    ||           |                    ||           |                    ||           |                    ||           |                    d           |                    d           |                    dd           |                    ddd           |                                 |                    dd           |                    ddd           |                                 d S )Nc              3   ,   K   | ]}|j         z  V  d S r   )rd   )r   dimrK   s     r"   	<genexpr>z.FigureCanvasGTK3._post_draw.<locals>.<genexpr>   s?       : : d55 : : : : : :r$   r   )r   r   r   r   )	r<   move_toline_toset_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke)	rK   rt   ctxx0y0r   r   x1y1s	   `        r"   r@   zFigureCanvasGTK3._post_draw   s    (F: : : :#'#8: : :B1!V!V 	BBBBBBBB!1VQ1a###VQ1a###

r$   c                     d S r   r   )rK   rt   r   s      r"   r?   zFigureCanvasGTK3.on_draw_event  s    r$   c                 Z    |                                  r|                                  d S d S r   )is_drawabler   rQ   s    r"   r2   zFigureCanvasGTK3.draw  s6     	OO	 	r$   c                 ^      j         dk    rd S  fd}t          j        |           _         d S )Nr   c                  Z    	                                   d_        n# d_        w xY wdS )Nr   F)r2   r;   )r   rK   s    r"   	idle_drawz-FigureCanvasGTK3.draw_idle.<locals>.idle_draw   s9    '		%&""Q"&&&&5s    	()r;   r   idle_add)rK   r   s   ` r"   r   zFigureCanvasGTK3.draw_idle  sI    ""F	 	 	 	 	 "]955r$   c                     t           j                                        }|                                r+|                    d           |                                )d S d S )NT)r   rW   rX   pendingrY   )rK   r[   s     r"   flush_eventszFigureCanvasGTK3.flush_events(  sd    "**,,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_MASKrC   r:   rR   rV   rj   r.   r/   r0   r3   r4   r5   r6   r7   r8   staticmethodr   rs   r}   r>   r1   r   r@   r?   r2   r   r   __classcell__)rB   s   @r"   r&   r&   ,   s_       %+"&D&'D'DEEM -1M56M/0 M01 M2	3
 M34 M34 M56 M-.J1 1 1 1 1 1>3 3 3$ $ $   ,            1 1 11 1 1   	H 	H \	H /3 : : : : \:& & &  
 
 
  
  <    

6 
6 
6$ $ $ $ $ $ $r$   r&   c                       e Zd Zd Zd ZdS )NavigationToolbar2GTK3c                    t           j                             |            |                     t          j        j                   i | _        | j        D ]S\  }}}}|(|                     t          j	                    d           2t          j
                            t          j                            t          t!          j        d| d                              t          j        j                  }|dv rt          j                    nt          j                    x| j        |<   }|                    |           |                    |           |                    dt3          | |                    |_        |                    |           |                     |d           Ut          j                    }|                     |d           t          j                    }	|	                    d           |                    d           |                     |	           t          j                    }|                     |d           t          j                    | _!        | j!        "                    t          j#        j$                   |                     | j!                   | %                                 tM          j        | |           d S )Nrl   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   )
rK   canvastexttooltip_text
image_filecallbackimagerx   toolitemlabels
             r"   r:   zNavigationToolbar2GTK3.__init__0  s~     &&&s'-...8< 	$ 	$4D,
H|C133R888I,,'',X0:-I-I-IK K L LM M *	, ,E +3o*E*E$&&&  "DM$& T"""""5)))%+^^7422&4 &4F"##L111KK#### <>>Hb!!!	C	E 	E 	ED!!!U<>>Hb!!!y{{  !2!8999T\"""'f55555r$   c           	         
 t          j        d j                                        t           j        j        t           j        t           j        j        t           j	        t           j        j
        f          
 j                                                                        D ]\  }}t          j                    }|                    |           |D ]}|                    d|            
                    |            j                                        |v r
                    |           t'          j        
j        d          
 fd            }
                    t.          j        d                    
                     j                                                   
                    d           
                                }
                                }
                                } j                                        |                                         d         }
                                  |t           j        j
        k    rd S t.          j        d         r,tB          j"        #                    |          t.          j        d<   	  j        j$        %                    ||	           |S # tL          $ r}	t          j'         j                                        tQ          |	          t           j)        j*        t           j+        j
        
          

                                 
                                  Y d }	~	d S d }	~	ww xY w)NzSave the figure)titletransient_foractionr   z*.znotify::filterc                  L                                                                    }j                                        |         d         }                    t          t                                                                        d|                                d S )Nr   .)	
get_filterget_namer(  get_supported_filetypes_groupedset_current_namer  r   get_current_namewith_suffix)r   r   fmtdialogrK   s      r"   on_notify_filterz<NavigationToolbar2GTK3.save_figure.<locals>.on_notify_filterr  s    $$&&//11D+==??EaHC##D002233??	C		JJKKM M M M Mr$   zsavefig.directoryTr   )format)r2  r)  message_typer   ),r   FileChooserDialogr(  get_toplevelFileChooserActionSAVESTOCK_CANCELResponseTypeCANCEL
STOCK_SAVEOKr8  items
FileFilterset_nameadd_pattern
add_filterget_default_filetype
set_filter	functoolspartialr=   set_current_foldermplrcParamsr9  get_default_filenameset_do_overwrite_confirmationrunget_filenamer6  r7  rR   ospathdirnamer-   savefig	ExceptionMessageDialogr  MessageTypeERRORButtonsType)rK   r   r   fmtsffr<  r>  responsefnameer=  s   `         @r"   save_figurez"NavigationToolbar2GTK3.save_figure`  s   &#+2244(-%s'7'>^s'7':<	
 
 
 ;>>@@FFHH	& 	&JD$!!BKK + +zCzz****b!!!{//11T99!!"%%%		6>+;	<	<	M 	M 	M 	M 	M 
=	<	M 	!!#,/B"CDDD @ @ B BCCC,,T222::<<##%%  k99;;BKKMMJ1Ms'***4<+, 	G020F0FCL,-	K&&uS&999L 	 	 	&"k6688s1vv _2CO<NP P PF JJLLLNN	s   "J> >
MBMMN)r   r   r   r:   rh  r   r$   r"   r  r  /  s3        .6 .6 .6`/ / / / /r$   r  c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )ToolbarGTK3r  c                    t          j        | |           t          j                            |            |                     dt          j        j                   t          j                    | _        | j        	                    t          j
        j                   |                     | j        ddd           |                                  i | _        i | _        d S )NorientationFr   )r   r:   r   Boxset_propertyOrientation
HORIZONTALr   _messager%  r&  r   pack_endr'  _groups
_toolitems)rK   toolmanagers     r"   r:   zToolbarGTK3.__init__  s    "4555-)CDDD	!!#"3"9:::dmUE1555r$   c                    |rt          j                    }nt          j                    }|                    |           |at           j                            t          j                            |          t           j	        j
                  }|                    |           |d}|                     |||           |                    d| j        |          }	|                    |           |                                 | j                            |g            | j        |                             ||	f           d S )Nrl   r  )r   r  r  r  r  r  r   r  r  r  r  r  _add_buttonr=   
_call_toolr  r'  rt  
setdefaultappend)
rK   r   grouppositionr+  descriptiontogglerx   r-  signals
             r"   add_toolitemzToolbarGTK3.add_toolitem  s%    	&)++FF^%%F!I,,''
33*, ,E ""5)))H111	4?DAA,,,""4,,,$$ff%566666r$   c                 j   || j         vr| j         r|                                  t          j                    }|                    t          j        j                   |                     |ddd           |                                 || j         |<   | j         |         	                    ||           d S )NFr   )
rs  _add_separatorr   Toolbarr	  r
  r  
pack_startr'  r  )rK   rx   r{  r|  toolbars        r"   rw  zToolbarGTK3._add_button  s    $$| &##%%%kmmGc.4555OOGUE1555")DLU""6844444r$   c                 0    |                      |           d S r   )trigger_tool)rK   btnr   s      r"   rx  zToolbarGTK3._call_tool  s    $r$   c                     || j         vrd S | j         |         D ]D\  }}|                    |           |                    |           |                    |           Ed S r   )rt  handler_block
set_activehandler_unblock)rK   r   toggledr.  r  s        r"   toggle_toolitemzToolbarGTK3.toggle_toolitem  sx    t&&F $ 5 	- 	-Hf""6***((($$V,,,,	- 	-r$   c                     | j                             |g           D ]>\  }}| j        D ]1}|| j        |         v r | j        |                             |           2?d S r   )rt  poprs  r   )rK   r   r.  _signalr{  s        r"   remove_toolitemzToolbarGTK3.remove_toolitem  sv    !%!4!4T2!>!> 	9 	9Hg 9 9t|E222L'..x8889	9 	9r$   c                     t          j                    }|                    dt           j        j                   |                     |ddd           |                                 d S )Nrl  FTr   )r   	Separatorrn  ro  VERTICALr  r'  )rK   seps     r"   r  zToolbarGTK3._add_separator  sQ    moo(@AAAUD!,,,r$   c                 :    | j                             |           d S r   )rq  r  )rK   ss     r"   set_messagezToolbarGTK3.set_message  s    """""r$   N)r   r   r   _icon_extensionr:   r  rw  rx  r  r  r  r  r   r$   r"   rj  rj    s        %O	 	 	7 7 70	5 	5 	5     - - -9 9 9  # # # # #r$   rj  c                       e Zd Zd ZdS )SaveFigureGTK3c                 ^    t                               |                                            d S r   )r  rh  "_make_classic_style_pseudo_toolbarr   s      r"   triggerzSaveFigureGTK3.trigger  s3    **3355	7 	7 	7 	7 	7r$   Nr   r   r   r  r   r$   r"   r  r    s#        7 7 7 7 7r$   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )HelpGTK3c                 @   ddddd}|                     d          }d |dd	         D             }|d	         }||v r	||         }nBt          |          d
k    r|                                }n|                                r|dgz  }d                    |          |z   S )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   c                     g | ]
}d |z   dz   S )<>r   )r   mods     r"   r   z0HelpGTK3._normalize_shortcut.<locals>.<listcomp>  s     666Cc	C666r$   Nrl   r   z<shift> )splitlen
capitalizeisupperr   )rK   r   specialpartsr   s        r"   _normalize_shortcutzHelpGTK3._normalize_shortcut  s     %#(	
 
 		#665":666Bi'>>#,CCXX\\..""CC[[]] 	 YKDwwt}}s""r$   c                 6    d|vo|                     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)rK   r   s     r"   _is_valid_shortcutzHelpGTK3._is_valid_shortcut  s#     S G)G)G%GGr$   c           	          t          j                    }t           j        j                                                  D ]\  }}|j        st          j                    }|                    |           |	                    d d            t          j
        d                     fd j                            |          D                       |j        |j                  }|                    |           t          j        dd j        j                                                  }|                                 |                    |           |                                 d S )Nc                 ,    |                      d          S )NF)set_visible)rt   datas     r"   r+   z1HelpGTK3._show_shortcuts_window.<locals>.<lambda>  s    f.@.@.G.G r$    c              3   l   K   | ].}                     |                              |          V  /d S r   )r  r  )r   r   rK   s     r"   r   z2HelpGTK3._show_shortcuts_window.<locals>.<genexpr>  sY       %5 %5..s33%5,,S11%5 %5 %5 %5 %5 %5r$   )acceleratorr1  subtitleHelpT)r1  modalr2  )r   ShortcutsSectionsortedru  toolsrJ  r}  ShortcutsGroupr#  forallShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurer(  rB  showr'  )rK   sectionr   toolr{  shortcutrT   s   `      r"   _show_shortcuts_windowzHelpGTK3._show_shortcuts_window
  sq   &(( !1!7!=!=!?!?@@ 	  	 JD$#  &((EKKLLGGNNN,HH %5 %5 %5 %5#/??EE%5 %5 %5 5 5 i)+ + +H IIh$,-::<<> > > 	

7r$   c                 "   t          j        | j        j                                        dt           j        j        t           j        j        | 	                                d          }|
                                 |                                 d S )Nr   r  )r1  )r   r_  r  r(  rB  r`  INFOrb  rI  _get_help_textrX  rR   )rK   r=  s     r"   _show_shortcuts_dialogzHelpGTK3._show_shortcuts_dialog,  st    "L,,..s#S_%79L9L9N9N   	

r$   c                     t          j        ddd          |                                  d S |                                  d S )Nr      r   )r   check_versionr  r  )rK   r   s     r"   r  zHelpGTK3.trigger4  sG    QA&&.'')))))'')))))r$   N)r   r   r   r  r  r  r  r  r   r$   r"   r  r    sc        # # #4H H H     D  * * * * *r$   r  c                       e Zd Zd ZdS )ToolCopyToClipboardGTK3c                    t           j                            t          j                  }| j                                        }|                                \  }}}}t          j        |||||          }	|	                    |	           d S r   )
r   	Clipboardgetr   SELECTION_CLIPBOARDr(  r]   get_geometrypixbuf_get_from_window	set_image)
rK   r   r   	clipboardrT   rb   rc   r   rf   pbs
             r"   r  zToolCopyToClipboardGTK3.trigger=  sy    M%%c&=>>	''))$11331eV'1eVDDBr$   Nr  r   r$   r"   r  r  ;  s#                 r$   r  c                       e Zd ZeZeZdS )r)   N)r   r   r   r  _toolbar2_classrj  _toolmanager_toolbar_classr   r$   r"   r)   r)   L  s        ,O!,r$   r)   c                       e Zd ZeZeZdS )_BackendGTK3N)r   r   r   r&   FigureCanvasr)   FigureManagerr   r$   r"   r  r  Q  s        #L%MMMr$   r  )=rQ  loggingrZ  pathlibr   
matplotlibrT  r   r   r   matplotlib.backend_basesr   r   r	   r
   r   r   r   giImportErrorerrrequire_version
ValueErrorrg  gi.repositoryr   r   r   r   r   r  r   r   r   r   r   r   	TimerGTK3	getLoggerr   _logcacher#   DrawingArear&   r  r  rm  rj  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser  ConfigureSubplotsGTKRubberbandGTKr)   exportr  r   r$   r"   <module>r     sT        				           1 1 1 1 1 1 1 1 1 1B B B B B B B B B B B B B B B B B BFIIII F F F
+;
<
<#EF  Bue$$$$       +a..a 
 7 6 6 6 6 6 6 6 6 6 6 6 6 6                    w"" 9 9 9@$ @$ @$ @$ @$' @$ @$ @$F` ` ` ` `3S[ ` ` `FI# I# I# I# I##SW I# I# I#X $#$4557 7 7 7 7]1 7 7 657 $#$455R* R* R* R* R*}) R* R* 65R*j $#$455         mC     65   " "l79 9 9 " "l02 2 2- - - - -) - - -
 & & & & &; & & & & &s,   9 AA

AA% %A;*A66A;