
    h[                        S SK r S SKrS SKrS SKrS SKJrJrJr  S SKJ	r	J
r
JrJrJrJrJr   S SKr \R&                  " SS5        S SKJrJrJrJrJr  SS	KJr  SS
KJrJrJ r J!r!J"r#  \RH                  S:  r%\RL                  " SSS 5      SL r' " S S\\RP                  5      r) " S S\!\RT                  5      r+ " S S\	\RT                  5      r,\RZ                  " \)5       " S S\R\                  5      5       r/\RZ                  " \)5       " S S\R`                  5      5       r1\RZ                  " \)5       " S S\Rd                  5      5       r3\RZ                  " \)\Rh                  5        \RZ                  " \)\Rj                  5        \,r6 " S S\ 5      r7\Rp                   " S S\5      5       r9g! \ a  r\" S5      \eSrCff = f! \ a  r\" \5      \eSrCff = f)    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TimerGTK)   /   r         c                      ^  \ rS rSrSrSr\R                  " S 5      rSU 4S jjr	S r
S rSS jrS	 rS
 rS rS rS rS rS rS rS rS rSS jrS rS rS rS rS rS rS rS rS r S r!Sr"U =r#$ ) FigureCanvasGTK4$   gtk4Fc                     [         $ N)FigureManagerGTK4)clss    Z/var/www/fran/franai/venv/lib/python3.13/site-packages/matplotlib/backends/backend_gtk4.py<lambda>FigureCanvasGTK4.<lambda>'   s    3D    c                 6  > [         T	U ]  US9  U R                  S5        U R                  S5        SU l        S U l        U R                  U R                  5        U R                  SU R                  5        [        (       a  U R                  SU R                  5        OU R                  SU R                  5        [        R                  " 5       nUR                  S5        UR                  SU R                   5        UR                  SU R"                  5        U R%                  U5        [        R&                  " 5       nUR                  S	U R(                  5        UR                  S
U R*                  5        U R%                  U5        [        R,                  " 5       nUR                  SU R.                  5        UR                  SU R0                  5        UR                  SU R2                  5        U R%                  U5        [        R4                  R7                  [        R8                  R:                  5      nUR                  SU R<                  5        U R%                  U5        U R?                  S5        [        R@                  " 5       nSn[        RB                  " SSS5      c  URE                  US5        O URE                  URG                  S5      5        U RI                  5       nURK                  U[        RL                  5        URO                  S5        g )N)figureTr   resizerealizeznotify::scale-factorpressedreleasedzkey-pressedzkey-releasedmotionenterleavescrollz/.matplotlib-canvas { background-color: white; }r   	   r   zutf-8zmatplotlib-canvas)(super__init__set_hexpandset_vexpand_idle_draw_id_rubberband_rectset_draw_func
_draw_funcconnectresize_event_GTK_GE_4_12_realize_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/   r2   cssstyle	style_ctx	__class__s
            r%   r6   FigureCanvasGTK4.__init__)   sV   ' $4??+Xt001<LLD$7$78LL/1P1PQ  "i!8!89j$";";<E"$$&M4#7#78ND$:$:;C **,x!9!9:w 7 78w 7 78F#**..**335x!2!23F#4 ooAQ1%-ub)u||G45**,	sC$K$KL/0r(   c                 8    [        SU 5      R                  5         g )Nclose_event)r   _processr\   s    r%   destroyFigureCanvasGTK4.destroy[   s    =$'002r(   c                 N    U R                  [        R                  " U5      5        g r"   )set_cursor_from_namer   mpl_to_gtk_cursor_name)r\   cursors     r%   
set_cursorFigureCanvasGTK4.set_cursor^   s    !!,"E"Ef"MNr(   c                 J   Uc]  U R                  5       R                  5       nUR                  U R                  5       R	                  5       R                  5       5      u  p4pVOUu  pEX@R                  -  nU R                  R                  R                  XPR                  -  -
  nXE4$ )aa  
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)r\   xysurfaceis_overxymasks          r%   _mpl_coordsFigureCanvasGTK4._mpl_coordsb   s     :oo'335G")"="=  "335AAC#EG4 DA'''KK##a*A*A&AAtr(   c                     [        SU /U R                  5       Q7UU R                  U5      [        (       a  UR	                  5       OS S.6R                  5         g)NrR   )step	modifiersguiEventT)r
   r   _mpl_modifiers_GOBJECT_GE_3_47get_current_eventrf   )r\   
controllerdxdys       r%   rR   FigureCanvasGTK4.scroll_eventx   sU    D	
#'#3#3#5	
<>))*57G7GZ113T	
 (*r(   c                     [        SU /U R                  X445      QUR                  5       P7U R                  U5      [        (       a  UR                  5       OS S.6R                  5         U R                  5         g )NrD   r   r   )r
   r   get_current_buttonr   r   r   rf   
grab_focusr\   r   n_pressr}   r~   s        r%   rD   #FigureCanvasGTK4.button_press_event   sp     $	
)-)9)91&)A	
))+	
 ))*57G7GZ113T		

 (*r(   c                     [        SU /U R                  X445      QUR                  5       P7U R                  U5      [        (       a  UR                  5       OS S.6R                  5         g )NrE   r   )r
   r   r   r   r   r   rf   r   s        r%   rE   %FigureCanvasGTK4.button_release_event   sf    "D	
+/+;+;QF+C	
))+	
 ))*57G7GZ113T		

 (*r(   c           	          [        SX R                  X#U5      /U R                  5       Q7S[        (       a  UR	                  5       OS 06R                  5         g)NrH   r   Tr   _get_keyr   r   r   rf   r\   r   keyvalkeycodestates        r%   rH    FigureCanvasGTK4.key_press_event   sR    t]]6E%J	
	
 8H7GZ113T	
 (*r(   c           	          [        SX R                  X#U5      /U R                  5       Q7S[        (       a  UR	                  5       OS 06R                  5         g)NrI   r   Tr   r   s        r%   rI   "FigureCanvasGTK4.key_release_event   sR    }}Ve'L	
	
 8H7GZ113T	
 (*r(   c                     [        SU /U R                  X#45      Q7U R                  U5      U R                  U5      [        (       a  UR                  5       OS S.6R                  5         g )NrK   )buttonsr   r   )r
   r   _mpl_buttonsr   r   r   rf   r\   r   r}   r~   s       r%   rK   $FigureCanvasGTK4.motion_notify_event   sa    !4	
*.*:*:A6*B	
%%j1))*57G7GZ113T		

 (*r(   c                     [        SU /U R                  X#45      Q7U R                  5       [        (       a  UR	                  5       OS S.6R                  5         g )Nfigure_enter_eventr   r	   r   r   r   r   rf   r   s       r%   rL   #FigureCanvasGTK4.enter_notify_event   sQ     $	
)-)9)91&)A	
))+7G7GZ113T	
 (*r(   c                     [        SU /U R                  5       Q7U R                  5       [        (       a  UR	                  5       OS S.6R                  5         g )Nfigure_leave_eventr   r   )r\   r   s     r%   rM   #FigureCanvasGTK4.leave_notify_event   sM     $	
)-)9)9);	
))+7G7GZ113T	
 (*r(   c                    U R                  5         U R                  R                  nX R                  -  U-  nX0R                  -  U-  nU R                  R	                  XVSS9  [        SU 5      R                  5         U R                  5         g )NF)forwardr>   )rA   r*   dpirw   set_size_inchesr   rf   	draw_idle)r\   areawidthry   r   winchhinchs          r%   r>   FigureCanvasGTK4.resize_event   su    '')kkoo///#500036##E%#@ND)224r(   c                    U R                  5       R                  5       nUR                  U R                  5       R	                  5       R                  5       5      u  p4pV[        R                  [        R                  R                  4[        R                  [        R                  R                  4[        R                  [        R                  R                  4[        R                  [        R                  R                   4[        R"                  [        R                  R$                  4/nU VV	s1 s H  u  pXi-  (       d  M  UiM     sn	n$ s  sn	nf r"   )rq   rr   rs   rt   ru   rv   r   LEFTr   ModifierTypeBUTTON1_MASKMIDDLEBUTTON2_MASKRIGHTBUTTON3_MASKBACKBUTTON4_MASKFORWARDBUTTON5_MASK
r\   r   r{   r|   r}   r~   event_state	mod_tablenamer   s
             r%   r   FigureCanvasGTK4._mpl_buttons   s     //#//1%,%@%@//1==?&A"A s//<<=!1!1!>!>? 0 0 = =>s//<<=  #"2"2"?"?@
	 (1GyK4FyGGGs   1EEc                    Uc]  U R                  5       R                  5       nUR                  U R                  5       R	                  5       R                  5       5      u  p4pVOUR                  5       nS[        R                  R                  4S[        R                  R                  4S[        R                  R                  4S[        R                  R                  4/nU VV	s/ s H  u  pXi-  (       d  M  UPM     sn	n$ s  sn	nf )Nctrlaltshiftr5   )rq   rr   rs   rt   ru   rv   get_current_event_stater   r   CONTROL_MASKALT_MASK
SHIFT_MASK
SUPER_MASKr   s
             r%   r   FigureCanvasGTK4._mpl_modifiers   s    oo'335G)0)D)D  "335AAC*E&G; %<<>KS%%223C$$--.c&&112c&&112	
	 (1GyK4FyGGGs   $D7Dc                 B   [        [        R                  " U5      5      n[        R                  " U[        R
                  " U5      5      nS[        R                  R                  S4S[        R                  R                  S4S[        R                  R                  S4S[        R                  R                  S4/nU VVV	s/ s H7  u  pxn	X:w  d  M  X8-  (       d  M  US:X  a  UR                  5       (       a  M5  UPM9     n
nnn	SR                  / U
QUP5      $ s  sn	nnf )Nr   controlr   r   r5   +)chrr   keyval_to_unicoder   _unikey_or_keysym_to_mplkeykeyval_namer   r   r   r   r   isprintablejoin)r\   r   r   r   unikeyr^   r   modr   mod_keymodss              r%   r   FigureCanvasGTK4._get_key   s   S**623//OOF#% S%%22I>C$$--u5c&&117;c&&117;	
	 +4D*3&Cw #(< F,>,>,@ ) 	 D xx$%%	Ds   DDD;Dc                     U R                  5       R                  5       nUR                  SU R                  5        U R                  5         g )Nznotify::scale)rq   rr   r=   rA   )r\   objr{   s      r%   r@   FigureCanvasGTK4._realize_event   s7    //#//1)H)HI'')r(   c                     [         (       a-  U R                  5       R                  5       R                  5       nOU R	                  5       nUc   eU R                  U5      (       a  U R                  5         g g r"   )r?   rq   rr   	get_scaleget_scale_factor_set_device_pixel_ratiodraw)r\   argskwargsscales       r%   rA   +FigureCanvasGTK4._update_device_pixel_ratio   s`     <OO%113==?E))+E   ''..IIK /r(   c                 0    Xl         U R                  5         g r"   )r:   
queue_draw)r\   rects     r%   _draw_rubberband!FigureCanvasGTK4._draw_rubberband  s     $r(   c                 H    U R                  X5        U R                  X5        g r"   )on_draw_event
_post_draw)r\   drawing_areactxr   ry   s        r%   r<   FigureCanvasGTK4._draw_func	  s    4%"r(   c                   ^  T R                   c  g SnSnU 4S jT R                    5       u  pVpxXW-   n	Xh-   n
UR                  XV5        UR                  XZ5        UR                  XV5        UR                  X5        UR                  XZ5        UR                  X5        UR                  X5        UR                  X5        UR                  S5        UR	                  U5        UR                  XD4S5        UR                  SSS5        UR                  5         UR                  XD4U5        UR                  SSS5        UR                  5         g )Nr   r   c              3   B   >#    U  H  nUTR                   -  v   M     g 7fr"   )rw   ).0dimr\   s     r%   	<genexpr>.FigureCanvasGTK4._post_draw.<locals>.<genexpr>  s#      :#8C d555#8s   r   )	r:   move_toline_toset_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke)r\   widgetr   lwdashx0y0whx1y1s   `          r%   r   FigureCanvasGTK4._post_draw  s     (:#'#8#8:VV 	BBBBBBBB!2d\1%1a#d\4(1a#

r(   c                     g r"    )r\   r  r   s      r%   r   FigureCanvasGTK4.on_draw_event-  s    r(   c                 P    U R                  5       (       a  U R                  5         g g r"   )is_drawabler   rg   s    r%   r   FigureCanvasGTK4.draw1  s     OO r(   c                 j   ^  T R                   S:w  a  g U 4S jn[        R                  " U5      T l         g )Nr   c                  N   >  TR                  5         STl        g! STl        f = f)Nr   F)r   r9   )r   r\   s    r%   	idle_draw-FigureCanvasGTK4.draw_idle.<locals>.idle_draw:  s(    '		%&" &'"s    	$)r9   r   idle_add)r\   r  s   ` r%   r   FigureCanvasGTK4.draw_idle6  s,    "	 "]]95r(   c                     [         R                  R                  5       nUR                  5       (       a)  UR	                  S5        UR                  5       (       a  M(  g g )NT)r   MainContextdefaultpending	iteration)r\   contexts     r%   flush_eventsFigureCanvasGTK4.flush_eventsB  s@    ""**,ood# oor(   )r9   r:   r"   )$__name__
__module____qualname____firstlineno__required_interactive_frameworksupports_blitr   classpropertymanager_classr6   rh   rn   r   rR   rD   rE   rH   rI   rK   rL   rM   r>   r   r   r   r@   rA   r   r<   r   r   r   r   r   __static_attributes____classcell__)rb   s   @r%   r   r   $   s    %+"M&&'DEM01d3O,H(H&"*
	
#@

6$ $r(   r   c                        \ rS rSrS rS rSrg)NavigationToolbar2GTK4iI  c                    [         R                  R                  U 5        U R                  S5        0 U l        U R
                   GHA  u  p#pEUc&  U R                  [         R                  " 5       5        M0  [         R                  R                  [        R                  R                  [        [        R                  " SU S35      5      5      5      nUS;   a  [         R                   " 5       O[         R"                  " 5       =U R                  U'   nUR%                  U5        UR                  S5        UR                  S5        UR'                  S[)        X5      5      Ul        UR-                  U5        U R                  U5        GMD     [         R.                  " 5       nUR1                  S5        UR3                  S	5        U R                  U5        [         R.                  " 5       U l        U R4                  R7                  [         R8                  R:                  5        U R                  U R4                  5        [<        R                  " X5        g )
Ntoolbarimages-symbolic.svg)zoompanflatimage-buttonclicked   <small> 
 </small>T)r   Boxr6   add_css_class_gtk_ids	toolitemsappend	SeparatorImagenew_from_giconr   Iconnew_for_stringstrr   _get_data_pathToggleButtonButton	set_childr=   getattr_signal_handlerset_tooltip_textLabel
set_markupr7   messageset_justifyJustificationr   r   )	r\   canvastexttooltip_text
image_filecallbackimagebuttonlabels	            r%   r6   NavigationToolbar2GTK4.__init__J  s   9%8<4D
|CMMO,II,,'',,X0:|=-IK LMNE
 '//&A  "

DMM$& U#  (  0%+^^742&4F"##L1KK% 9G0 		C	E$Eyy{  !2!2!8!89DLL!''5r(   c                   ^  [         R                  " ST R                  R                  5       [         R                  R
                  SS9nUT l        [         R                  " 5       nUR                  S5        UR                  S5        UR                  U5        UR                  U5        / nS n[        T R                  R                  5       R                  5       5       H  u  nu  px[         R                  " 5       nUR                  U5        U H  n	UR                  SU	 35        M     UR                  U5        UR                  U5        T R                  R!                  5       U;   d  M  UnM     XE   /US U QXES-   S  QnUR#                  SS	XD5        UR%                  SUS
   5        UR'                  [(        R*                  R-                  [.        R0                  R3                  [4        R6                  S   5      5      5        UR9                  T R                  R;                  5       5        [<        R>                  " UR@                  S5      U 4S j5       n
URC                  5         T RD                  $ )NzSave the figureT)titletransient_foractionmodalz	All files*z*.r   formatzFile formatr   savefig.directoryresponsec           
        > U R                  5       nU R                  S5      nTR                  R                  5       U   S   nU R	                  5         S Tl        U[        R                  R                  :w  a  g [        R                  S   (       a1  UR                  5       nUR                  5       [        R                  S'    TR                  R                  R                  UR                  5       US9  g ! [         a  n[        R                   " TR                  R#                  5       [        R$                  R&                  [        R(                  R*                  S[-        U5      S9nUR/                  5          S nAg S nAff = f)Nr^  r   r_  )r^  T)rZ  message_typer   r\  rP  )get_file
get_choicerO  get_supported_filetypes_groupedrh   _save_dialogr   ResponseTypeACCEPTmplrcParams
get_parentget_pathr*   savefig	ExceptionMessageDialogget_rootMessageTypeERRORButtonsTypeOKrB  show)dialogr`  filefmtparentemsgr\   s          r%   on_response7NavigationToolbar2GTK4.save_figure.<locals>.on_response  s   ??$D##H-C++==?DQGCNN $D3++222||/0*4:OO4E01""**4==?3*G ''"&++"6"6"8!$!6!6OO..dQ	!
 

s   2C6 6
F A9E>>F)#r   FileChooserNativerO  rp  FileChooserActionSAVErf  
FileFilterset_nameadd_pattern
add_filter
set_filter	enumeratere  itemsr<  get_default_filetype
add_choice
set_choiceset_current_folderr   Filenew_for_pathospath
expanduserri  rj  set_current_nameget_default_filename	functoolspartialr=   ru  UNKNOWN_SAVED_STATUS)r\   r   rv  ffformatsdefault_formatir   fmtsrx  r|  s   `          r%   save_figure"NavigationToolbar2GTK4.save_figuret  s   &&#++..0((--	
 #^^
K 
s""(;;=CCE GOA|!BKKC5z* b!NN4 {{//1T9!" G * 0W_n-E 01,-.0(M7D(GAJ/!!#(("7"7GGs||,?@A#C 	D @ @ BC			6>>:	6	 
7	, 	(((r(   )r:  rf  rL  N)r"  r#  r$  r%  r6   r  r*  r  r(   r%   r-  r-  I  s    (6T=)r(   r-  c                   N    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rSrg)ToolbarGTK4i  r1  c                    [         R                  " X5        [        R                  R                  U 5        U R	                  S[        R
                  R                  5        [        R                  " 5       U l        U R                  U R                  5        0 U l	        0 U l
        [        R                  " 5       nUR                  S5        UR                  S5        U R                  U5        [        R                  " 5       U l        U R                  R                  [        R                   R"                  5        U R                  U R                  5        g )Norientationr7  T)r   r6   r   r8  set_propertyOrientation
HORIZONTAL	_tool_boxr<  _groups
_toolitemsrJ  rK  r7   _messagerM  rN  r   )r\   toolmanagerrV  s      r%   r6   ToolbarGTK4.__init__  s    ""45-)C)CD DNN# 		C	E$E		!!#"3"3"9"9:DMM"r(   c                 n   U(       a  [         R                  " 5       nO[         R                  " 5       nUR                  U5        UR	                  S5        Ub^  [         R
                  R                  [        R                  R                  U5      5      nUR                  U5        UR	                  S5        Uc  SnU R                  XrU5        UR                  SU R                  U5      n	UR                  U5        U R                  R!                  U/ 5        U R                  U   R#                  Xy45        g )Nr4  r5  r4   r6  )r   rD  rE  	set_labelr9  r>  r?  r   r@  rA  rF  _add_buttonr=   
_call_toolrI  r  
setdefaultr<  )
r\   r   grouppositionrR  descriptiontogglerU  rT  signals
             r%   add_toolitemToolbarGTK4.add_toolitem  s    %%'FZZ\FV$!II,,''
35EU#  0H1	4??DA,""4,$$f%56r(   c                     S /nU R                   U   R                  5       nUb&  UR                  U5        UR                  5       nUb  M&  X2   $ r"   )r  get_first_childr<  get_next_sibling)r\   r  r  childrenchilds        r%   _find_child_at_position#ToolbarGTK4._find_child_at_position  sS    6U#335OOE"**,E  !!r(   c                 :   X R                   ;  a_  U R                   (       a  U R                  5         [        R                  " 5       nU R                  R                  U5        X@R                   U'   U R                   U   R                  XR                  X#5      5        g r"   )r  _add_separatorr   r8  r  r<  insert_child_afterr  )r\   rU  r  r  	group_boxs        r%   r  ToolbarGTK4._add_button  sn    $||##%	INN!!),"+LLU..00A	Cr(   c                 &    U R                  U5        g r"   )trigger_tool)r\   btnr   s      r%   r  ToolbarGTK4._call_tool  s    $r(   c                     XR                   ;  a  g U R                   U    H8  u  p4UR                  U5        UR                  U5        UR                  U5        M:     g r"   )r  handler_block
set_activehandler_unblock)r\   r   toggledtoolitemr  s        r%   toggle_toolitemToolbarGTK4.toggle_toolitem  sO    & $ 5H""6*($$V, !6r(   c                     U R                   R                  U/ 5       HJ  u  p#U R                   H5  nX R                  U   ;   d  M  U R                  U   R                  U5        M7     ML     g r"   )r  popr  remove)r\   r   r  _signalr  s        r%   remove_toolitemToolbarGTK4.remove_toolitem  sT    !%!4!4T2!>H||E22LL'..x8 & "?r(   c                     [         R                  " 5       nUR                  S[         R                  R                  5        U R
                  R                  U5        g )Nr  )r   r=  r  r  rQ   r  r<  )r\   seps     r%   r  ToolbarGTK4._add_separator  s9    mmo(@(@Ac"r(   c                 :    U R                   R                  U5        g r"   )r  r  )r\   ss     r%   set_messageToolbarGTK4.set_message  s    "r(   )r  r  r  r  N)r"  r#  r$  r%  _icon_extensionr6   r  r  r  r  r  r  r  r  r*  r  r(   r%   r  r    s5    %O#270"C -9#
#r(   r  c                       \ rS rSrS rSrg)SaveFigureGTK4i  c                 J    [         R                  U R                  5       5        g r"   )r-  r  "_make_classic_style_pseudo_toolbar)r\   r   r   s      r%   triggerSaveFigureGTK4.trigger  s    **335	7r(   r  Nr"  r#  r$  r%  r  r*  r  r(   r%   r  r    s    7r(   r  c                   &    \ rS rSrS rS rS rSrg)HelpGTK4i  c                 .   SSSSS.nUR                  S5      nUSS  Vs/ s H  nS	U-   S
-   PM     nnUS   nX;   a  X!   nO;[        U5      S:  a  UR                  5       nOUR                  5       (       a  US/-  nSR	                  U5      U-   $ s  snf )zj
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   Nr4   <>r   z<shift> )splitlen
capitalizeisupperr   )r\   r^   specialpartsr   r   s         r%   _normalize_shortcutHelpGTK4._normalize_shortcut  s     %#(	
 		#+0":6:Cc	C:6Bi>,CX\.."C[[]]YKDwwt}s"" 7s   Bc                 F    SU;  =(       a    UR                  S5      (       + $ )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)r\   r^   s     r%   _is_valid_shortcutHelpGTK4._is_valid_shortcut7  s      S G)G%GGr(   c           	        ^  [         R                  " 5       n[        T R                  R                  R                  5       5       H  u  p4UR                  (       d  M  [         R                  " 5       nUR                  U5        UR                  5       nUb&  UR                  S5        UR                  5       nUb  M&  [         R                  " SR                  U 4S jT R                  R                  U5       5       5      UR                  UR                  S9nUR                  U5        M     [         R                   " SST R"                  R$                  R'                  5       S9nUR)                  U5        UR+                  5         g )NF c              3   v   >#    U  H.  nTR                  U5      (       d  M  TR                  U5      v   M0     g 7fr"   )r  r  )r   r^   r\   s     r%   r   #HelpGTK4.trigger.<locals>.<genexpr>T  s6      %5E..s3 2D,,S11Es   99)acceleratorrY  subtitleHelpT)rY  r\  rZ  )r   ShortcutsSectionsortedr  toolsr  r  ShortcutsGroupr<  r  set_visibler  ShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurerO  rp  rF  ru  )	r\   r   sectionr   toolr  r  shortcutwindows	   `        r%   r  HelpGTK4.trigger@  s;   &&( !1!1!7!7!=!=!?@JD## &&(ENN5!))+E#!!%(..0 # ,,HH %5#//??E%5 5 ii))+H LL"/ A2 $$,,--668: 	!r(   r  N)r"  r#  r$  r%  r  r  r  r*  r  r(   r%   r  r    s    #4H"r(   r  c                       \ rS rSrS rSrg)ToolCopyToClipboardGTK4ie  c                    [         R                  " 5        nU R                  R                  U5        U R                  R	                  5       u  pE[
        R                  R                  UR                  5       [
        R                  R                  SSXEUS-  5      nS S S 5        U R                  R                  5       nUR                  W5        g ! , (       d  f       N:= f)NT   r   )ioBytesIOrO  
print_rgbaget_width_heightr   Pixbufnew_from_data	getbuffer
ColorspaceRGBget_clipboardset)r\   r   r   fr	  r
  pb	clipboards           r%   r  ToolCopyToClipboardGTK4.triggerg  s    ZZ\QKK""1%;;//1DA!!//090D0D0H0H$0111>B  KK--/	b \s   BC
Cr  Nr  r  r(   r%   r  r  e  s    r(   r  c                       \ rS rSr\r\rSrg)r#   iy  r  N)	r"  r#  r$  r%  r-  _toolbar2_classr  _toolmanager_toolbar_classr*  r  r(   r%   r#   r#   y  s    ,O!,r(   r#   c                       \ rS rSr\r\rSrg)_BackendGTK4i~  r  N)	r"  r#  r$  r%  r   FigureCanvasr#   FigureManagerr*  r  r(   r%   r)  r)  ~  s    #L%Mr(   r)  ):r  r  r  
matplotlibri  r   r   r   matplotlib.backend_basesr   r   r   r	   r
   r   r   giImportErrorerrrequire_version
ValueErrorrz  gi.repositoryr   r   r   r   r   r  r   r   r   r   r   r   	TimerGTK4version_infor   rU   r?   DrawingArear   r8  r-  r  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser  ConfigureSubplotsGTKRubberbandGTKToolbarr#   exportr)  r  r(   r%   <module>r?     s    	 	  1 1B B BF  ue$ 9 8  
 ??j0   B*d2b$' b$J	h)3SWW h)V]##SWW ]#@ ##$457]11 7 67 ##$45F})) F 6FR ##$45	mCC 	 6	  " "l779  " "l002
-) -
 &; & &e  F
;
<#EF    a.a s.   F/ G /G5	F>>GG	GG