
    NgT                        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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.                  Z/ ej0        e+           G d dej1                              Z2 ej0        e+           G d dej3                              Z4 ej0        e+           G d dej5                              Z6e/Z, ej0        e+ej7                    ej0        e+ej8                    G d de!          Z9ej:         G d de                      Z;dS )    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                            t           j                                        t          j        |                     S N)r   Cursornew_from_nameDisplayget_defaultr   mpl_to_gtk_cursor_name)
mpl_cursors    \/var/www/html/ai-engine/env/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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.   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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rJ   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)rJ   cursorrS   contexts       r!   rU   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)rJ   eventrS   tra   rb   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   ri   _mpl_modifiersrh   rO   )rJ   widgetrf   rl   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.   rm   rn   Fr   ri   buttonrr   rh   rO   rJ   rs   rf   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 )Nr/   ru   Frv   rx   s      r!   r/   z%FigureCanvasGTK3.button_release_event   sk    )4 	#$$U++	#-2\	# 	#!00==!	# 	# 	# $,8:::ur#   c                     t          d| |                     |          g|                                 R d|i                                 dS )Nr2   rn   Tr	   _get_keyri   rO   rx   s      r!   r2   z FigureCanvasGTK3.key_press_event   sY    "Du%%	!(,(8(8(:(:	! 	! 	!	! 	!!)tr#   c                     t          d| |                     |          g|                                 R d|i                                 dS )Nr3   rn   Tr{   rx   s      r!   r3   z"FigureCanvasGTK3.key_release_event   sY    $du%%	!(,(8(8(:(:	! 	! 	!	! 	!!)tr#   c                     t          d| g|                     |          R |                     |j                  |d                                 dS )Nr4   ru   F)r   ri   rr   rh   rO   rx   s      r!   r4   z$FigureCanvasGTK3.motion_notify_event   s^    ($ 	#1A1A%1H1H 	# 	#!00==!	# 	# 	##+8:::ur#   c                     t           j                            |                                                                           }t          d| g|                     |          R |                     |          |d                                 d S )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       :--    2 2 4 4 	*D 	&43C3CE3J3J 	& 	& $ 3 3H = =$	& 	& 	&&.hjjjjjr#   c                     t           j                            |                                                                           }t          d| g|                     |          R |                     |          |d                                 d S )Nfigure_leave_eventru   r   r   s       r!   r6   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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44r#   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shiftr8   c                 2    g | ]\  }}}|k    |z  |S  r   ).0namemaskkeyevent_stater   s       r!   
<listcomp>z3FigureCanvasGTK3._mpl_modifiers.<locals>.<listcomp>   s8     : : :tSc>>kD&8> !>>r#   )r   ModifierTypeCONTROL_MASK	MOD1_MASK
SHIFT_MASK	MOD4_MASK)r   r   rm   s   `` r!   rr   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_namerr   rh   isprintableremovejoin)rJ   rf   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rJ   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 )NrS      Fr   )rT   r   rc   re   r,   r   r   )rJ   rs   rf   whr   s         r!   r0   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   )rJ   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   )rc   )r   dimrJ   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)	rJ   rs   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   )rJ   rs   r   s      r!   r>   zFigureCanvasGTK3.on_draw_event  s    r#   c                 Z    |                                  r|                                  d S d S r   )is_drawabler   rP   s    r!   r1   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)r1   r:   )r   rJ   s    r!   	idle_drawz-FigureCanvasGTK3.draw_idle.<locals>.idle_draw  s9    '		%&""Q"&&&&5s    	()r:   r   idle_add)rJ   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   rV   rW   pendingrX   )rJ   rZ   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_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%   ,   sA       %+"&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   /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 )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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$        %                    ||	           d 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parentactionbuttonsz*.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dialogrJ   s      r!   on_notify_filterz<NavigationToolbar2GTK3.save_figure.<locals>.on_notify_filtere  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)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/  r1  responsefnameer0  s   `         @r!   save_figurez"NavigationToolbar2GTK3.save_figureS  s   &#;++--(-%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'***F<+, 	G020F0FCL,-	K&&uS&99999 	 	 	&{//11#a&&_*CO4FH H HF JJLLLNN	s   !J> >
MBMMN)r   r   r   r9   r\  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   r9   r   Boxset_propertyOrientation
HORIZONTALr  _messager  r  r  pack_endr  _groups
_toolitems)rJ   toolmanagers     r!   r9   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 )Nrk   r   )r   r	  r
  r  r  r  r   r  r  r  r  r  _add_buttonr<   
_call_toolr  r  rh  
setdefaultappend)
rJ   r   grouppositionr  descriptiontogglerw   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   )
rg  _add_separatorr   Toolbarr   r   r   
pack_startr  r   )rJ   rw   ro  rp  toolbars        r!   rk  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)rJ   btnr   s      r!   rl  zToolbarGTK3._call_tool  s    $r#   c                     || j         vrd S | j         |         D ]D\  }}|                    |           |                    |           |                    |           Ed S r   )rh  handler_block
set_activehandler_unblock)rJ   r   toggledr   rs  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   )rh  poprg  r   )rJ   r   r   _signalro  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 )Nr`  FTr   )r   	Separatorrb  rc  VERTICALrx  r  )rJ   seps     r!   rv  zToolbarGTK3._add_separator  sQ    moo(@AAAUD!,,,r#   c                 :    | j                             |           d S r   )re  r  )rJ   ss     r!   set_messagezToolbarGTK3.set_message  s    """""r#   N)r   r   r   _icon_extensionr9   rt  rk  rl  r  r  rv  r  r   r#   r!   r^  r^    s        %O	 	 	7 7 70	5 	5 	5     - - -9 9 9  # # # # #r#   r^  c                       e Zd Zd ZdS )SaveFigureGTK3c                 ^    t                               |                                            d S r   )r   r\  "_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#   Nrk   r   z<shift> )splitlen
capitalizeisupperr   )rJ   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)rJ   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)rs   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   rJ   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#   )acceleratorr#  subtitleHelpT)r#  modaltransient_for)r   ShortcutsSectionsortedri  toolsr>  rq  ShortcutsGroupr  forallShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurer  r6  showr  )rJ   sectionr   toolro  shortcutrS   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  )r#  )r   rS  r  r  r6  rT  INFOrV  r=  _get_help_textrL  rQ   )rJ   r0  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  )rJ   r   s     r!   r  zHelpGTK3.trigger&  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)
rJ   r   r   	clipboardrS   ra   rb   r   re   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_classr^  _toolmanager_toolbar_classr   r#   r!   r(   r(   >  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  C  s        #L%MMMr#   r  )<rE  loggingrN  pathlibr   
matplotlibrH  r   r   r   matplotlib.backend_basesr   r   r	   r
   r   r   giImportErrorerrrequire_version
ValueErrorr[  gi.repositoryr   r   r   r   r   r  r   r   r   r   r   r   	TimerGTK3	getLoggerr   _logcacher"   DrawingArear%   rw  r   ra  r^  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser  ConfigureSubplotsGTKRubberbandGTKr(   exportr  r   r#   r!   <module>r     s8        				           1 1 1 1 1 1 1 1 1 1               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s$ s$ s$ s$ s$' s$ s$ s$l_ _ _ _ _3S[ _ _ _D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,   7 AAAA# #A9(A44A9