
    P/PhX                     T   d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
mZmZmZmZmZ 	 d dl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#  G d deej$                  Z% G d de!ej&                  Z' G d de	ej&                  Z( ej)        e%           G d dej*                              Z+ ej)        e%           G d dej,                              Z- ej)        e%           G d dej.                              Z/ ej)        e%ej0                    ej)        e%ej1                   e(Z2 G d de           Z3ej4         G d de                      Z5dS )    N)_apibackend_toolscbook)ToolContainerBaseMouseButtonKeyEventLocationEvent
MouseEventResizeEvent
CloseEventz#The GTK4 backends require PyGObjectGtkz4.0)GioGLibr   Gdk	GdkPixbuf   )_backend_gtk)_BackendGTK_FigureCanvasGTK_FigureManagerGTK_NavigationToolbar2GTKTimerGTKc                        e Zd ZdZdZ ej        d           Zd fd	Zd Z	d Z
ddZd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Z xZ S )FigureCanvasGTK4gtk4Fc                     t           S N)FigureManagerGTK4)clss    `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/backends/backend_gtk4.py<lambda>zFigureCanvasGTK4.<lambda>$   s    3D     Nc                 <   t                                          |           |                     d           |                     d           d| _        d | _        |                     | j                   |                     d| j	                   |                     d| j
                   t          j                    }|                    d           |                    d| j                   |                    d| j                   |                     |           t          j                    }|                    d| j                   |                    d	| j                   |                     |           t          j                    }|                    d
| j                   |                    d| j                   |                    d| j                   |                     |           t          j                            t          j        j                  }|                    d| j                   |                     |           |                     d           t          j                    }d}t          j        ddd          |                     |d           n(|                     |!                    d                     | "                                }|#                    |t          j$                   |%                    d           d S )N)figureTr   resizeznotify::scale-factorpressedreleasedzkey-pressedzkey-releasedmotionenterleavescrollz/.matplotlib-canvas { background-color: white; }   	      zutf-8zmatplotlib-canvas)&super__init__set_hexpandset_vexpand_idle_draw_id_rubberband_rectset_draw_func
_draw_funcconnectresize_event_update_device_pixel_ratior   GestureClick
set_buttonbutton_press_eventbutton_release_eventadd_controllerEventControllerKeykey_press_eventkey_release_eventEventControllerMotionmotion_notify_evententer_notify_eventleave_notify_eventEventControllerScrollnewEventControllerScrollFlagsVERTICALscroll_eventset_focusableCssProvidercheck_versionload_from_dataencodeget_style_contextadd_provider#STYLE_PROVIDER_PRIORITY_APPLICATION	add_class)
selfr$   clickkeyr(   r+   cssstyle	style_ctx	__class__s
            r    r1   zFigureCanvasGTK4.__init__&   s   ''' $4?+++Xt0111+T-LMMM ""i!8999j$";<<<E"""$&&M4#7888ND$:;;;C   *,,x!9:::w 7888w 7888F###*..*35 5x!2333F###4   oAQ1%%-ub))))u||G44555**,,	sC$KLLL/00000r"   c                 J    t          d|                                            d S )Nclose_event)r   _processrU   s    r    destroyzFigureCanvasGTK4.destroyU   s$    =$''0022222r"   c                 T    |                      t          j        |                     d S r   )set_cursor_from_namer   mpl_to_gtk_cursor_name)rU   cursors     r    
set_cursorzFigureCanvasGTK4.set_cursorX   s'    !!,"Ef"M"MNNNNNr"   c                 R   |w|                                                                  }|                    |                                                                                                           \  }}}}n|\  }}|| j        z  }| j        j        j	        || j        z  z
  }||fS )a  
        Convert the *xy* position of a GTK event, or of the current cursor
        position if *xy* 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_nativeget_surfaceget_device_positionget_displayget_default_seatget_pointerdevice_pixel_ratior$   bboxheight)rU   xysurfaceis_overxymasks          r    _mpl_coordszFigureCanvasGTK4._mpl_coords\   s     :oo''3355G")"="=  ""3355AACC#E #EGQ44 DAq''K#a$*A&AA!tr"   c                     t          d| g|                                 R ||                     |          |                                d                                 dS )NrK   )step	modifiersguiEventT)r
   rv   _mpl_modifiersget_current_eventr^   )rU   
controllerdxdys       r    rK   zFigureCanvasGTK4.scroll_eventr   sl    D	
#'#3#3#5#5	
 	
<>))*551133	
 	
 	
 (***tr"   c                    t          d| g|                     ||f          |                                R |                     |          |                                d                                 |                                  d S )Nr=   ry   rz   )r
   rv   get_current_buttonr{   r|   r^   
grab_focusrU   r}   n_pressrs   rt   s        r    r=   z#FigureCanvasGTK4.button_press_eventz   s     $	
)-)9)91a&)A)A	
))++	
 	
 ))*551133		
 	
 	

 (***r"   c                     t          d| g|                     ||f          |                                R |                     |          |                                d                                 d S )Nr>   r   )r
   rv   r   r{   r|   r^   r   s        r    r>   z%FigureCanvasGTK4.button_release_event   s    "D	
+/+;+;QF+C+C	
))++	
 	
 ))*551133		
 	
 	

 (*****r"   c           	          t          d| |                     |||          g|                                 R d|                                i                                 dS )NrA   rz   Tr   _get_keyrv   r|   r^   rU   r}   keyvalkeycodestates        r    rA   z FigureCanvasGTK4.key_press_event   sl    tT]]67E%J%J	
	
 	
 	
  1133	
 	
 (***tr"   c           	          t          d| |                     |||          g|                                 R d|                                i                                 dS )NrB   rz   Tr   r   s        r    rB   z"FigureCanvasGTK4.key_release_event   sl    t}}VWe'L'L	
	
 	
 	
  1133	
 	
 (***tr"   c                     t          d| g|                     ||f          R |                     |          |                     |          |                                d                                 d S )NrD   )buttonsry   rz   )r
   rv   _mpl_buttonsr{   r|   r^   rU   r}   rs   rt   s       r    rD   z$FigureCanvasGTK4.motion_notify_event   s    !4	
*.*:*:Aq6*B*B	
 	
%%j11))*551133		
 	
 	

 (*****r"   c                     t          d| g|                     ||f          R |                                 |                                d                                 d S )Nfigure_enter_eventr   r	   rv   r{   r|   r^   r   s       r    rE   z#FigureCanvasGTK4.enter_notify_event   sl     $	
)-)9)91a&)A)A	
 	
))++1133	
 	
 	
 (*****r"   c                     t          d| g|                                 R |                                 |                                d                                 d S )Nfigure_leave_eventr   r   )rU   r}   s     r    rF   z#FigureCanvasGTK4.leave_notify_event   sf     $	
)-)9)9););	
 	
))++1133	
 	
 	
 (*****r"   c                     |                                   | j        j        }|| j        z  |z  }|| j        z  |z  }| j                            ||d           t          d|                                            |                                  d S )NF)forwardr9   )r:   r$   dpirm   set_size_inchesr   r^   	draw_idle)rU   areawidthro   r   winchhinchs          r    r9   zFigureCanvasGTK4.resize_event   s    '')))ko//#50036##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                 $    h | ]\  }}|z  
|S  r   .0nameru   event_states      r    	<setcomp>z0FigureCanvasGTK4._mpl_buttons.<locals>.<setcomp>   '    GGGtK$4FGGGGr"   )rg   rh   ri   rj   rk   rl   r   LEFTr   ModifierTypeBUTTON1_MASKMIDDLEBUTTON2_MASKRIGHTBUTTON3_MASKBACKBUTTON4_MASKFORWARDBUTTON5_MASKrU   r}   rq   rr   rs   rt   	mod_tabler   s          @r    r   zFigureCanvasGTK4._mpl_buttons   s     //##//11%,%@%@//11==??&A &A"A{ s/<=!1!>? 0 =>s/<= #"2"?@
	 HGGGyGGGGr"   c                    |w|                                                                  }|                    |                                                                                                           \  }}}n|                                dt          j        j	        fdt          j        j
        fdt          j        j        fdt          j        j        fg}fd|D             S )Nctrlaltshiftr0   c                 $    g | ]\  }}|z  
|S r   r   r   s      r    
<listcomp>z3FigureCanvasGTK4._mpl_modifiers.<locals>.<listcomp>   r   r"   )rg   rh   ri   rj   rk   rl   get_current_event_stater   r   CONTROL_MASKALT_MASK
SHIFT_MASK
SUPER_MASKr   s          @r    r{   zFigureCanvasGTK4._mpl_modifiers   s    oo''3355G)0)D)D  ""3355AACC*E *E&GQ;; %<<>>KS%23C$-.c&12c&12	
	 HGGGyGGGGr"   c                    t          t          j        |                    t          j        t          j        |                    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             }d                    g |          S )Nr   controlr   r   r0   c                 f    g | ]-\  }}}|k    r!|z  r|d k    r                                 +|.S )r   )isprintable)r   modru   mod_keyrW   r   unikeys       r    r   z-FigureCanvasGTK4._get_key.<locals>.<listcomp>   sT     D D D&Cw354<F,>,>,@,@ 'r"   +)chrr   keyval_to_unicoder   _unikey_or_keysym_to_mplkeykeyval_namer   r   r   r   r   join)rU   r   r   r   ry   modsrW   r   s      `  @@r    r   zFigureCanvasGTK4._get_key   s    S*62233/OF##% % S%2I>C$-u5c&17;c&17;	
	D D D D D D*3D D D xx$%%%r"   c                     |                      |                                           r|                                  d S d S r   )_set_device_pixel_ratioget_scale_factordrawrU   argskwargss      r    r:   z+FigureCanvasGTK4._update_device_pixel_ratio   sA     ''(=(=(?(?@@ 	IIKKKKK	 	r"   c                 <    || _         |                                  d S r   )r5   
queue_draw)rU   rects     r    _draw_rubberbandz!FigureCanvasGTK4._draw_rubberband   s      $r"   c                 ^    |                      | |           |                     | |           d S r   )on_draw_event
_post_draw)rU   drawing_areactxr   ro   s        r    r7   zFigureCanvasGTK4._draw_func   s2    4%%%c"""""r"   c                 &     j         d S d}d} fd j         D             \  }}}}||z   }	||z   }
|                    ||           |                    ||
           |                    ||           |                    |	|           |                    ||
           |                    |	|
           |                    |	|           |                    |	|
           |                    d           |                    |           |                    ||fd           |                    ddd           |                                 |                    ||f|           |                    ddd           |                                 d S )Nr   r.   c              3   ,   K   | ]}|j         z  V  d S r   )rm   )r   dimrU   s     r    	<genexpr>z.FigureCanvasGTK4._post_draw.<locals>.<genexpr>  s?       : : d55 : : : : : :r"   r   )	r5   move_toline_toset_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke)rU   widgetr   lwdashx0y0whx1y1s   `          r    r   zFigureCanvasGTK4._post_draw   s    (F: : : :#'#8: : :B1!V!V 	BBBBBBBB!2dD\1%%%1a###dD\4(((1a###

r"   c                     d S r   r   )rU   r   r   s      r    r   zFigureCanvasGTK4.on_draw_event  s    r"   c                 Z    |                                  r|                                  d S d S r   )is_drawabler   r_   s    r    r   zFigureCanvasGTK4.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)r   r4   )r   rU   s    r    	idle_drawz-FigureCanvasGTK4.draw_idle.<locals>.idle_draw*  s9    '		%&""Q"&&&&5s    	()r4   r   idle_add)rU   r   s   ` r    r   zFigureCanvasGTK4.draw_idle&  sI    ""F	 	 	 	 	 "]955r"   c                     t           j                                        }|                                r+|                    d           |                                )d S d S )NT)r   MainContextdefaultpending	iteration)rU   contexts     r    flush_eventszFigureCanvasGTK4.flush_events2  sd    "**,,oo 	$d### oo 	$ 	$ 	$ 	$ 	$r"   r   )!__name__
__module____qualname__required_interactive_frameworksupports_blitr   classpropertymanager_classr1   r`   re   rv   rK   r=   r>   rA   rB   rD   rE   rF   r9   r   r{   r   r:   r   r7   r   r   r   r   r  __classcell__)r[   s   @r    r   r   !   s       %+"M&D&'D'DEEM-1 -1 -1 -1 -1 -1^3 3 3O O O   ,                  H H H(H H H H& & &"    
# # #  @    

6 
6 
6$ $ $ $ $ $ $r"   r   c                       e Zd Zd Zd ZdS )NavigationToolbar2GTK4c                    t           j                            |            |                     d           i | _        | j        D ]V\  }}}}|'|                     t          j                               1t           j        	                    t          j                            t          t          j        d| d                                        }|dv rt          j                    nt          j                    x| j        |<   }|                    |           |                    d           |                    d           |                    dt)          | |                    |_        |                    |           |                     |           Xt          j                    }|                    d           |                    d	           |                     |           t          j                    | _        | j                            t           j        j                   |                     | j                   t=          j        | |           d S )
Ntoolbarimages-symbolic.svg)zoompanflatimage-buttonclicked   <small> 
 </small>T)r   Boxr1   add_css_class_gtk_ids	toolitemsappend	SeparatorImagenew_from_giconr   Iconnew_for_stringstrr   _get_data_pathToggleButtonButton	set_childr8   getattr_signal_handlerset_tooltip_textLabel
set_markupr2   messageset_justifyJustificationr   r   )	rU   canvastexttooltip_text
image_filecallbackimagebuttonlabels	            r    r1   zNavigationToolbar2GTK4.__init__:  s2   9%%%8< 	  	 4D,
H|CMOO,,,I,,'',X0:-I-I-IK K L LM MN NE
 '//&A&A """
DM$& U###  (((  000%+^^7422&4 &4F"##L111KK 	C	E 	E 	E$Ey{{  !2!8999DL!!!'f55555r"   c                 <    t          j        d j                                        t           j        j        d          }| _        t          j                    }|                    d           |	                    d           |
                    |           |                    |           g }d }t           j                                                                                  D ]\  }\  }}t          j                    }|                    |           |D ]}	|	                    d|	            |
                    |           |                    |            j                                        |v r|}||         g|d |         ||dz   d          }|                    dd	||           |                    d|d
                    |                    t(          j                            t.          j                            t4          j        d                                        |                     j                                                   t=          j        |j         d           fd            }
|!                                  j"        S )NzSave the figureT)titletransient_foractionmodalz	All files*z*.r   formatzFile formatr   savefig.directoryresponsec           
         |                                  }|                     d          }j                                        |         d         }|                                  d _        |t          j        j        k    rd S t          j
        d         r5|                                }|                                t          j
        d<   	 j        j                            |                                |           d S # t          $ rz}t          j        j                                        t          j        j        t          j        j        dt-          |                    }|                                 Y d }~d S d }~ww xY w)Nr<  r   r=  )r<  T)r8  message_typer   r:  r/  )get_file
get_choicer.  get_supported_filetypes_groupedr`   _save_dialogr   ResponseTypeACCEPTmplrcParams
get_parentget_pathr$   savefig	ExceptionMessageDialogget_rootMessageTypeERRORButtonsTypeOKr!  show)dialogr>  filefmtparentemsgrU   s          r    on_responsez7NavigationToolbar2GTK4.save_figure.<locals>.on_response  sU   ??$$D##H--C+==??DQGCNN $D3+222|/0 F**4:OO4E4E01"**4==??3*GGGGG   '"&+"6"6"8"8!$!6O.dQ	! ! !
 








s   
3C? ?
F	A/E>>F)#r   FileChooserNativer.  rN  FileChooserActionSAVErD  
FileFilterset_nameadd_pattern
add_filter
set_filter	enumeraterC  itemsr  get_default_filetype
add_choice
set_choiceset_current_folderr   Filenew_for_pathospath
expanduserrG  rH  set_current_nameget_default_filename	functoolspartialr8   rS  UNKNOWN_SAVED_STATUS)rU   r   rT  ffformatsdefault_formatir   fmtsrV  rZ  s   `          r    save_figurez"NavigationToolbar2GTK4.save_figured  s   &#+..00(-	  
 #^
K   
s""(;;==CCEE G  G 		# 		#OA|d!!BKK + +zCzz****b!!!NN4   {//11T99!" >* 0W_n_-E 0N1,--.0(M7GDDD(GAJ///!!#("7"7Gs|,?@AA#C #C 	D 	D 	D @ @ B BCCC		6>:	6	6	 	 	 	 
7	6	, 	((r"   N)r  r  r  r1   rx  r   r"   r    r  r  9  s3        (6 (6 (6T=) =) =) =) =)r"   r  c                   H    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )ToolbarGTK4r  c                    t          j        | |           t          j                            |            |                     dt          j        j                   t          j                    | _        |                     | j                   i | _	        i | _
        t          j                    }|                    d           |                    d           |                     |           t          j                    | _        | j                            t          j        j                   |                     | j                   d S )Norientationr  T)r   r1   r   r  set_propertyOrientation
HORIZONTAL	_tool_boxr  _groups
_toolitemsr)  r*  r2   _messager,  r-  r   )rU   toolmanagerr5  s      r    r1   zToolbarGTK4.__init__  s   "4555-)CDDD DN### 	C	E 	E 	E$E	!!#"3"9:::DM"""""r"   c                    |rt          j                    }nt          j                    }|                    |           |                    d           |ft           j                            t          j        	                    |                    }|
                    |           |                    d           |d}|                     |||           |                    d| j        |          }	|                    |           | j                            |g            | j        |                             ||	f           d S )Nr  r  r/   r  )r   r#  r$  	set_labelr  r  r  r   r  r   r%  _add_buttonr8   
_call_toolr(  r  
setdefaultr  )
rU   r   grouppositionr1  descriptiontoggler4  r3  signals
             r    add_toolitemzToolbarGTK4.add_toolitem  s1    	"%''FFZ\\FV$$$!I,,''
335 5EU###  000H111	4?DAA,,,""4,,,$$ff%566666r"   c                     d g}| j         |                                         }|+|                    |           |                                }|+||         S r   )r  get_first_childr  get_next_sibling)rU   r  r  childrenchilds        r    _find_child_at_positionz#ToolbarGTK4._find_child_at_position  s_    6U#3355OOE"""**,,E  !!r"   c                 &   || j         vrR| j         r|                                  t          j                    }| j                            |           || j         |<   | j         |                             ||                     ||                     d S r   )r  _add_separatorr   r  r  r  insert_child_afterr  )rU   r4  r  r  	group_boxs        r    r  zToolbarGTK4._add_button  s    $$| &##%%%		IN!!),,,"+DLU..D00AA	C 	C 	C 	C 	Cr"   c                 0    |                      |           d S r   )trigger_tool)rU   btnr   s      r    r  zToolbarGTK4._call_tool  s    $r"   c                     || j         vrd S | j         |         D ]D\  }}|                    |           |                    |           |                    |           Ed S r   )r  handler_block
set_activehandler_unblock)rU   r   toggledtoolitemr  s        r    toggle_toolitemzToolbarGTK4.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   )r  popr  remove)rU   r   r  _signalr  s        r    remove_toolitemzToolbarGTK4.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                   | j                            |           d S )Nr|  )r   r  r}  r~  rJ   r  r  )rU   seps     r    r  zToolbarGTK4._add_separator  sD    moo(@AAAc"""""r"   c                 :    | j                             |           d S r   )r  r  )rU   ss     r    set_messagezToolbarGTK4.set_message   s    """""r"   N)r  r  r  _icon_extensionr1   r  r  r  r  r  r  r  r  r   r"   r    rz  rz    s        %O# # #27 7 70" " "C C C     - - -9 9 9# # #
# # # # #r"   rz  c                       e Zd Zd ZdS )SaveFigureGTK4c                 ^    t                               |                                            d S r   )r  rx  "_make_classic_style_pseudo_toolbarr   s      r    triggerzSaveFigureGTK4.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S )HelpGTK4c                 @   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 `FigureCanvasGTK4._get_key`.
        	BackSpace	Page_DownPage_UpScroll_Lock)	backspacepagedownpageupscroll_lockr   c                     g | ]
}d |z   dz   S )<>r   )r   r   s     r    r   z0HelpGTK4._normalize_shortcut.<locals>.<listcomp>  s     666Cc	C666r"   Nr/   r   z<shift> )splitlen
capitalizeisupperr   )rU   rW   specialpartsr   s        r    _normalize_shortcutzHelpGTK4._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 `FigureCanvasGTK4._get_key`).
        - The shortcut window only shows keyboard shortcuts, not mouse buttons.
        zcmd+zMouseButton.)
startswith)rU   rW   s     r    _is_valid_shortcutzHelpGTK4._is_valid_shortcut'  s#     S G)G)G%GGr"   c           	          t          j                    }t           j        j                                                  D ]\  }}|j        st          j                    }|                    |           |	                                }|+|
                    d           |                                }|+t          j        d                     fd j                            |          D                       |j        |j                  }|                    |           t          j        dd j        j                                                  }|                    |           |                                 d S )NF c              3   l   K   | ].}                     |                              |          V  /d S r   )r  r  )r   rW   rU   s     r    r   z#HelpGTK4.trigger.<locals>.<genexpr>D  sY       %5 %5..s33%5,,S11%5 %5 %5 %5 %5 %5r"   )acceleratorr7  subtitleHelpT)r7  r:  r8  )r   ShortcutsSectionsortedr  toolsrd  r  ShortcutsGroupr  r  set_visibler  ShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurer.  rN  r%  rS  )	rU   r   sectionr   toolr  r  shortcutwindows	   `        r    r  zHelpGTK4.trigger0  s   &(( !1!7!=!=!?!?@@ 	# 	#JD$#  &((ENN5!!!))++E#!!%(((..00 # ,HH %5 %5 %5 %5#/??EE%5 %5 %5 5 5 i)+ + +H LL""""$,-6688: : : 	!!!r"   N)r  r  r  r  r  r  r   r"   r    r  r    sD        # # #4H H H" " " " "r"   r  c                       e Zd Zd ZdS )ToolCopyToClipboardGTK4c                    t          j                    5 }| j                            |           | j                                        \  }}t
          j                            |                                t
          j	        j
        dd|||dz            }d d d            n# 1 swxY w Y   | j                                        }|                    |           d S )NT   r,   )ioBytesIOr.  
print_rgbaget_width_heightr   Pixbufnew_from_data	getbuffer
ColorspaceRGBget_clipboardset)rU   r   r   fr   r   pb	clipboards           r    r  zToolCopyToClipboardGTK4.triggerW  s    Z\\ 	>QK""1%%%;//11DAq!//090D0H$011a1> >B	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> K--//	bs   B B  B$'B$Nr  r   r"   r    r  r  U  s#            r"   r  c                       e Zd ZeZeZdS )r   N)r  r  r  r  _toolbar2_classrz  _toolmanager_toolbar_classr   r"   r    r   r   i  s        ,O!,r"   r   c                       e Zd ZeZeZdS )_BackendGTK4N)r  r  r  r   FigureCanvasr   FigureManagerr   r"   r    r  r  n  s        #L%MMMr"   r  )6rp  r  rk  
matplotlibrG  r   r   r   matplotlib.backend_basesr   r   r   r	   r
   r   r   giImportErrorerrrequire_version
ValueErrorrX  gi.repositoryr   r   r   r   r   r  r   r   r   r   r   r   	TimerGTK4DrawingArear   r  r  rz  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser  ConfigureSubplotsGTKRubberbandGTKToolbarr   exportr  r   r"   r    <module>r     s       				 				     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 
 9 8 8 8 8 8 8 8 8 8 8 8 8 8                   U$ U$ U$ U$ U$' U$ U$ U$ph) h) h) h) h)3SW h) h) h)V]# ]# ]# ]# ]##SW ]# ]# ]#@ $#$4557 7 7 7 7]1 7 7 657 $#$455F F F F F}) F F 65FR $#$455	 	 	 	 	mC 	 	 65	 # "l79 9 9 " "l02 2 2
- - - - -) - - -
 & & & & &; & & & & &s,   3 A	AA	A A5$A00A5