
    9Цi*\                        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Jr   \" SS5        S SKr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$  \RJ                  S:  r&\RN                  " SSS 5      SL r( " S S\ \RR                  5      r* " S S\"\RV                  5      r, " S S\	\RV                  5      r-\R\                  " \*5       " S S\R^                  5      5       r0\R\                  " \*5       " S S\Rb                  5      5       r2\R\                  " \*5       " S S\Rf                  5      5       r4\R\                  " \*\Rj                  5        \R\                  " \*\Rl                  5        \-r7 " S S\!5      r8\Rr                   " S S\5      5       r:g! \ 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
CloseEvent)require_versionz#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    _/var/www/html/ai-image-ml/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keyr0   r3   cssstyle	style_ctx	__class__s
            r&   r7   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_coordsc   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)NrS   )step	modifiersguiEventT)r
   r   _mpl_modifiers_GOBJECT_GE_3_47get_current_eventrg   )r]   
controllerdxdys       r&   rS   FigureCanvasGTK4.scroll_eventy   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 )NrE   r   r   )r
   r   get_current_buttonr   r   r   rg   
grab_focusr]   r   n_pressr~   r   s        r&   rE   #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 )NrF   r   )r
   r   r   r   r   r   rg   r   s        r&   rF   %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)NrI   r   Tr   _get_keyr   r   r   rg   r]   r   keyvalkeycodestates        r&   rI    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)NrJ   r   Tr   r   s        r&   rJ   "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 )NrL   )buttonsr   r   )r
   r   _mpl_buttonsr   r   r   rg   r]   r   r~   r   s       r&   rL   $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   rg   r   s       r&   rM   #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&   rN   #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?   )rB   r+   dpirx   set_size_inchesr   rg   	draw_idle)r]   areawidthrz   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#   )rr   rs   rt   ru   rv   rw   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shiftr6   )rr   rs   rt   ru   rv   rw   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   r6   +)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)rr   rs   r>   rB   )r]   objr|   s      r&   rA   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@   rr   rs   	get_scaleget_scale_factor_set_device_pixel_ratiodraw)r]   argskwargsscales       r&   rB   +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   rz   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#   )rx   ).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   rh   s    r&   r   FigureCanvasGTK4.draw2  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   r:   )r   r]   s    r&   	idle_draw-FigureCanvasGTK4.draw_idle.<locals>.idle_draw;  s(    '		%&" &'"s    	$)r:   r   idle_add)r]   r  s   ` r&   r   FigureCanvasGTK4.draw_idle7  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_eventsC  s@    ""**,ood# oor)   )r:   r;   r#   )$__name__
__module____qualname____firstlineno__required_interactive_frameworksupports_blitr   classpropertymanager_classr7   ri   ro   r   rS   rE   rF   rI   rJ   rL   rM   rN   r?   r   r   r   rA   rB   r   r=   r   r   r   r   r!  __static_attributes____classcell__)rc   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)NavigationToolbar2GTK4iJ  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   Boxr7   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_markupr8   messageset_justifyJustificationr   r   )	r]   canvastexttooltip_text
image_filecallbackimagebuttonlabels	            r&   r7   NavigationToolbar2GTK4.__init__K  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)r[  message_typer   r]  rQ  )get_file
get_choicerP  get_supported_filetypes_groupedri   _save_dialogr   ResponseTypeACCEPTmplrcParams
get_parentget_pathr+   savefig	ExceptionMessageDialogget_rootMessageTypeERRORButtonsTypeOKrC  show)dialogra  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   FileChooserNativerP  rq  FileChooserActionSAVErg  
FileFilterset_nameadd_pattern
add_filter
set_filter	enumeraterf  itemsr=  get_default_filetype
add_choice
set_choiceset_current_folderr   Filenew_for_pathospath
expanduserrj  rk  set_current_nameget_default_filename	functoolspartialr>   rv  UNKNOWN_SAVED_STATUS)r]   r   rw  ffformatsdefault_formatir   fmtsry  r}  s   `          r&   save_figure"NavigationToolbar2GTK4.save_figureu  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;  rg  rM  N)r#  r$  r%  r&  r7   r  r+  r  r)   r&   r.  r.  J  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  r2  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orientationr8  T)r   r7   r   r9  set_propertyOrientation
HORIZONTAL	_tool_boxr=  _groups
_toolitemsrK  rL  r8   _messagerN  rO  r   )r]   toolmanagerrW  s      r&   r7   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 )Nr5  r6  r5   r7  )r   rE  rF  	set_labelr:  r?  r@  r   rA  rB  rG  _add_buttonr>   
_call_toolrJ  r  
setdefaultr=  )
r]   r   grouppositionrS  descriptiontogglerV  rU  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   r9  r  r=  insert_child_afterr  )r]   rV  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  rR   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_extensionr7   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   Nr5   <>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_shortcut8  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>U  s6      %5E..s3 2D,,S11Es   99)acceleratorrZ  subtitleHelpT)rZ  r]  r[  )r   ShortcutsSectionsortedr  toolsr  r  ShortcutsGroupr=  r  set_visibler  ShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurerP  rq  rG  rv  )	r]   r   sectionr   toolr  r  shortcutwindows	   `        r&   r  HelpGTK4.triggerA  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)ToolCopyToClipboardGTK4if  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BytesIOrP  
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.triggerh  s    ZZ\QKK""1%;;//1DA!!//090D0D0H0H$0111>B  KK--/	b \s   BC
Cr  Nr  r  r)   r&   r  r  f  s    r)   r  c                       \ rS rSr\r\rSrg)r$   iz  r  N)	r#  r$  r%  r&  r.  _toolbar2_classr  _toolmanager_toolbar_classr+  r  r)   r&   r$   r$   z  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  
matplotlibrj  r   r   r   matplotlib.backend_basesr   r   r   r	   r
   r   r   gir   gi_require_versionImportErrorerr
ValueErrorr{  gi.repositoryr   r   r   r   r   r  r   r   r   r   r   r   	TimerGTK4version_infor   rV   r@   DrawingArear   r9  r.  r  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser  ConfigureSubplotsGTKRubberbandGTKToolbarr$   exportr*  r  r)   r&   <module>r@     s    	 	  1 1B B BF8  ue$ 
 8 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
-) -
 &; & &g  F
;
<#EF    a.a s.   F+ 	G +F?1	F::F?G	GG