
    9Цi0W                        S SK r S SKrS SKrS SKJ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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&  \RN                  " \(5      r)\ RT                  S 5       r+ " S S\"\RX                  5      r- " S S\$\R\                  5      r/ " S S\\R`                  5      r1\Rd                  " \-5       " S S\Rf                  5      5       r4\Rd                  " \-5       " S S\Rj                  5      5       r6\Rd                  " \-5       " S S\Rn                  5      5       r8\1r.\Rd                  " \-\ Rr                  5        \Rd                  " \-\ Rt                  5         " S S\#5      r;\!Rx                   " 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)Path)_apibackend_toolscbook)ToolContainerBaseMouseButton
CloseEventKeyEventLocationEvent
MouseEventResizeEvent)require_versionz#The GTK3 backends require PyGObjectGtkz3.0)GioGLibGObjectr   Gdk   )_backend_gtk)_BackendGTK_FigureCanvasGTK_FigureManagerGTK_NavigationToolbar2GTKTimerGTKc                     [         R                  R                  [         R                  R	                  5       [
        R                  " U 5      5      $ N)r   Cursornew_from_nameDisplayget_defaultr   mpl_to_gtk_cursor_name)
mpl_cursors    _/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/matplotlib/backends/backend_gtk3.py_mpl_to_gtk_cursorr$   %   s7    ::##!++J79 9    c                     ^  \ rS rSrSr\R                  " S 5      r\R                  R                  \R                  R                  -  \R                  R                  -  \R                  R                  -  \R                  R                  -  \R                  R                  -  \R                  R                   -  \R                  R"                  -  \R                  R$                  -  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 5       r"\!SS.S j5       r#S r$S r%S r&S r'S r(S r)S r*S r+S r,Sr-U =r.$ ) FigureCanvasGTK3,   gtk3c                     [         $ r   )FigureManagerGTK3)clss    r#   <lambda>FigureCanvasGTK3.<lambda>.   s    3Dr%   Nc                   > [         TU ]  US9  SU l        S U l        U R	                  SU R
                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  S	U R                  5        U R	                  S	U R                  5        U R	                  S
U R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                  5        U R	                  SU R                   5        U R	                  SU R"                  5        U R%                  U R&                  R(                  5        U R+                  S5        [,        R.                  " 5       nUR1                  S5        U R3                  5       nUR5                  U[,        R6                  5        UR9                  S5        g )N)figurer   scroll_eventbutton_press_eventbutton_release_eventconfigure_eventzscreen-changedznotify::scale-factordrawkey_press_eventkey_release_eventmotion_notify_evententer_notify_eventleave_notify_eventsize_allocateTs/   .matplotlib-canvas { background-color: white; }zmatplotlib-canvas)super__init___idle_draw_id_rubberband_rectconnectr1   r2   r3   r4   _update_device_pixel_ratioon_draw_event
_post_drawr6   r7   r8   r9   r:   r;   
set_events	__class__
event_maskset_can_focusr   CssProviderload_from_dataget_style_contextadd_provider#STYLE_PROVIDER_PRIORITY_APPLICATION	add_class)selfr0   css	style_ctxrE   s       r#   r=   FigureCanvasGTK3.__init__;   s   ' $^T->->?)T-D-DE+T-F-FG&T-A-AB%T-L-LM+T-L-LMVT-?-?@VT__=&T-A-AB(T-C-CD*T-E-EF)T-D-DE)T-D-DE_T-?-?@1124 ooMN**,	sC$K$KL/0r%   c                 8    [        SU 5      R                  5         g )Nclose_event)r	   _processrN   s    r#   destroyFigureCanvasGTK3.destroyZ   s    =$'002r%   c                     U R                  S5      nUbJ  UR                  [        U5      5        [        R                  R                  5       nUR                  S5        g g )NwindowT)get_property
set_cursorr$   r   MainContextdefault	iteration)rN   cursorrY   contexts       r#   r[   FigureCanvasGTK3.set_cursor]   sS    ""8,089&&..0Gd# r%   c                 T   UcO  U R                  5       nUR                  UR                  5       R                  5       R	                  5       5      u  p4pVOUR
                  UR                  pTX@R                  -  nU R                  R                  R                  XPR                  -  -
  nXE4$ )a_  
Convert the position of a GTK event, or of the current cursor position
if *event* is None, to Matplotlib coordinates.

GTK use logical pixels, but the figure is scaled to physical pixels for
rendering.  Transform to physical pixels so that all of the down-stream
transforms work as expected.

Also, the origin is different and needs to be corrected.
)
get_windowget_device_positionget_displayget_device_managerget_client_pointerxydevice_pixel_ratior0   bboxheight)rN   eventrY   trh   ri   states          r#   _mpl_coordsFigureCanvasGTK3._mpl_coordse   s     =__&F#77""$779LLNPNA!U 77EGGq'''KK##a*A*A&AAtr%   c                     UR                   [        R                  R                  :X  a  SOSn[	        SU /U R                  U5      Q7UU R                  UR                  5      US.6R                  5         g)Nr   r1   )step	modifiersguiEventF)		directionr   ScrollDirectionUPr   rp   _mpl_modifiersro   rT   )rN   widgetrm   rt   s       r#   r1   FigureCanvasGTK3.scroll_event{   sh    OOs':':'='==q2>4 	#$$U+	#26!00=!	# $,8:r%   c                     [        SU /U R                  U5      QUR                  P7U R                  UR                  5      US.6R                  5         g)Nr2   ru   rv   Fr   rp   buttonrz   ro   rT   rN   r{   rm   s      r#   r2   #FigureCanvasGTK3.button_press_event   sT    ' 	#$$U+	#-2\\	#!00=!	# $,8:r%   c                     [        SU /U R                  U5      QUR                  P7U R                  UR                  5      US.6R                  5         g)Nr3   r~   Fr   r   s      r#   r3   %FigureCanvasGTK3.button_release_event   sT    )4 	#$$U+	#-2\\	#!00=!	# $,8:r%   c                 |    [        SU U R                  U5      /U R                  5       Q7SU06R                  5         g)Nr6   rv   Tr
   _get_keyrp   rT   r   s      r#   r6    FigureCanvasGTK3.key_press_event   s>    "Du%	!(,(8(8(:	!	!!)r%   c                 |    [        SU U R                  U5      /U R                  5       Q7SU06R                  5         g)Nr7   rv   Tr   r   s      r#   r7   "FigureCanvasGTK3.key_release_event   s>    $du%	!(,(8(8(:	!	!!)r%   c                     [        SU /U R                  U5      Q7U R                  UR                  5      U R	                  UR                  5      US.6R                  5         g)Nr8   )buttonsru   rv   F)r   rp   _mpl_buttonsro   rz   rT   r   s      r#   r8   $FigureCanvasGTK3.motion_notify_event   sY    ($ 	#1A1A%1H 	#,,U[[9!00=!	# $,8:r%   c                     [         R                  R                  U R                  5       5      R	                  5       n[        SU /U R                  U5      Q7U R                  U5      US.6R                  5         g )Nfigure_enter_eventr~   	r   Keymapget_for_displayre   get_modifier_stater   rp   rz   rT   rN   r{   rm   gtk_modss       r#   r9   #FigureCanvasGTK3.enter_notify_event   j    ::--  2 2 4 	*D 	&43C3CE3J 	& $ 3 3H =$	&&.hjr%   c                     [         R                  R                  U R                  5       5      R	                  5       n[        SU /U R                  U5      Q7U R                  U5      US.6R                  5         g )Nfigure_leave_eventr~   r   r   s       r#   r:   #FigureCanvasGTK3.leave_notify_event   r   r%   c                 (   U R                   R                  nUR                  U R                  -  U-  nUR                  U R                  -  U-  nU R                   R                  XESS9  [        SU 5      R                  5         U R                  5         g )NFforwardresize_event)	r0   dpiwidthrj   rl   set_size_inchesr   rT   	draw_idle)rN   r{   
allocationdpivalwinchhinchs         r#   r;   FigureCanvasGTK3.size_allocate   sy      4#:#::VC!!D$;$;;fD##E%#@ND)224r%   c                    [         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/ s H  u  p#X-  (       d  M  UPM     snn$ s  snnf r   )r   LEFTr   ModifierTypeBUTTON1_MASKMIDDLEBUTTON2_MASKRIGHTBUTTON3_MASKBACKBUTTON4_MASKFORWARDBUTTON5_MASK)event_stateru   namemasks       r#   r   FigureCanvasGTK3._mpl_buttons   s     s//<<=!1!1!>!>? 0 0 = =>s//<<=  #"2"2"?"?@
	 (1GyK4FyGGGs   C2(C2excludec                L   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 H  u  p4nX:w  d  M  X-  (       d  M  UPM     snnn$ s  snnnf )Nctrlcontrolaltshiftr<   )r   r   CONTROL_MASK	MOD1_MASK
SHIFT_MASK	MOD4_MASK)r   r   ru   r   r   keys         r#   rz   FigureCanvasGTK3._mpl_modifiers   s     S%%22I>C$$..6c&&117;c&&00':	
	 -6 :IS> &1&8 I : 	: :s   9B	BBc                 t   [        [        R                  " UR                  5      5      n[        R
                  " U[        R                  " UR                  5      5      nU R                  UR                  US9nSU;   a&  UR                  5       (       a  UR                  S5        SR                  / UQUP5      $ )Nr   r   +)chrr   keyval_to_unicodekeyvalr   _unikey_or_keysym_to_mplkeykeyval_namerz   ro   isprintableremovejoin)rN   rm   unikeyr   modss        r#   r   FigureCanvasGTK3._get_key   s    S**5<<89//COOELL13""5;;"<d?v1133KK xx$%%r%   c                     U R                  U R                  5       5      (       a!  U R                  5         U R                  5         g g r   )_set_device_pixel_ratioget_scale_factorqueue_resize
queue_drawrN   argskwargss      r#   rA   +FigureCanvasGTK3._update_device_pixel_ratio   s<     ''(=(=(?@@ OO Ar%   c                    UR                  S5      c  g UR                  U R                  -  nUR                  U R                  -  nUS:  d  US:  a  g U R                  R
                  nU R                  R                  X5-  XE-  SS9  g)NrY      Fr   )rZ   r   rj   rl   r0   r   r   )rN   r{   rm   whr   s         r#   r4    FigureCanvasGTK3.configure_event   s{    x(0KK$111LL4222q5AEkkoo##AGQWe#Dr%   c                 0    Xl         U R                  5         g r   )r?   r   )rN   rects     r#   _draw_rubberband!FigureCanvasGTK3._draw_rubberband   s     $r%   c                   ^  T R                   c  g U 4S jT R                    5       u  p4pVX5-   nXF-   nUR                  X45        UR                  X85        UR                  X45        UR                  Xt5        UR                  X85        UR                  Xx5        UR                  Xt5        UR                  Xx5        UR                  S5        UR	                  S5        UR                  SS5        UR                  SSS5        UR                  5         UR                  SS5        UR                  SSS5        UR                  5         g )Nc              3   B   >#    U  H  nUTR                   -  v   M     g 7fr   )rj   ).0dimrN   s     r#   	<genexpr>.FigureCanvasGTK3._post_draw.<locals>.<genexpr>   s#      :#8C d555#8s   r   )r   r   r   r   )	r?   move_toline_toset_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke)	rN   r{   ctxx0y0r   r   x1y1s	   `        r#   rC   FigureCanvasGTK3._post_draw   s     (:#'#8#8:VV 	BBBBBBBB!1VQ1a#VQ1a#

r%   c                     g r    )rN   r{   r   s      r#   rB   FigureCanvasGTK3.on_draw_event  s    r%   c                 P    U R                  5       (       a  U R                  5         g g r   )is_drawabler   rU   s    r#   r5   FigureCanvasGTK3.draw  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)r5   r>   )r   rN   s    r#   	idle_draw-FigureCanvasGTK3.draw_idle.<locals>.idle_draw   s(    '		%&" &'"s    	$)r>   r   idle_add)rN   r  s   ` r#   r   FigureCanvasGTK3.draw_idle  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   r\   r]   pendingr^   )rN   r`   s     r#   flush_eventsFigureCanvasGTK3.flush_events(  s@    ""**,ood# oor%   )r>   r?   r   )/__name__
__module____qualname____firstlineno__required_interactive_frameworkr   classpropertymanager_classr   	EventMaskBUTTON_PRESS_MASKBUTTON_RELEASE_MASKEXPOSURE_MASKKEY_PRESS_MASKKEY_RELEASE_MASKENTER_NOTIFY_MASKLEAVE_NOTIFY_MASKPOINTER_MOTION_MASKSCROLL_MASKrF   r=   rV   r[   rp   r1   r2   r3   r6   r7   r8   r9   r:   r;   staticmethodr   rz   r   rA   r4   r   rC   rB   r5   r   r  __static_attributes____classcell__)rE   s   @r#   r'   r'   ,   sg   %+"&&'DEM --11MM556MM//0 MM001 MM22	3
 MM334 MM334 MM556 MM--.J1>3$,11 	H 	H /3 : :&

<

6$ $r%   r'   c                        \ rS rSrS rS rSrg)NavigationToolbar2GTK3i/  c                    [         R                   R                  U 5        U R                  [        R                  R
                  5        0 U l        U R                   GHK  u  p#pEUc'  U R                  [        R                  " 5       S5        M1  [        R                  R                  [        R                  R                  [        [         R"                  " SU S35      5      5      [        R$                  R&                  5      nUS;   a  [        R(                  " 5       O[        R*                  " 5       =U R                  U'   nUR-                  U5        UR/                  U5        UR1                  S[3        X5      5      Ul        UR7                  U5        U R                  US5        GMN     [        R8                  " 5       nU R                  US5        [        R:                  " 5       n	U	R=                  S5        UR?                  S5        URA                  U	5        [        R8                  " 5       nU R                  US5        [        R:                  " 5       U l!        U RB                  RE                  [        RF                  RH                  5        URA                  U RB                  5        U RK                  5         [L        R                  " X5        g )Nrs   images-symbolic.svg)zoompanclickedu   <small> 
 </small>T)'r   r=   	set_styler   ToolbarStyleICONS_gtk_ids	toolitemsinsertSeparatorToolItemImagenew_from_giconr   Iconnew_for_stringstrr   _get_data_pathIconSizeLARGE_TOOLBARToggleToolButton
ToolButton	set_labelset_icon_widgetr@   getattr_signal_handlerset_tooltip_textToolItemLabel
set_markup
set_expandaddmessageset_justifyJustificationr   show_allr   )
rN   canvastexttooltip_text
image_filecallbackimager   toolitemlabels
             r#   r=   NavigationToolbar2GTK3.__init__0  s     &s''--.8<4D
|C113R8II,,'',,X0:|=-IK LM **	,E +3o*E$$& "DMM$& T"""5)%+^^742&4F"##L1KK#% 9G0 <<>Hb!		C	ED!U<<>Hb!yy{  !2!2!8!89T\\"''5r%   c           	        ^ ^
 [         R                  " ST R                  R                  5       [         R                  R
                  [         R                  [         R                  R                  [         R                  [         R                  R                  4S9m
T R                  R                  5       R                  5        H  u  p#[         R                  " 5       nUR                  U5        U H  nUR                  SU 35        M     T
R!                  U5        T R                  R#                  5       U;   d  My  T
R%                  U5        M     [&        R(                  " T
R*                  S5      U
U 4S j5       nT
R-                  [.        R0                  S   5        T
R3                  T R                  R5                  5       5        T
R7                  S5        T
R9                  5       nT
R;                  5       nT
R=                  5       nT R                  R                  5       UR?                  5          S   nT
RA                  5         U[         R                  R                  :w  a  g [.        R0                  S   (       a0  [B        RD                  RG                  U5      [.        R0                  S'    T R                  RH                  RK                  XS	9  U$ ! [L         a  n	[         RN                  " T R                  R                  5       [Q        U	5      [         RR                  RT                  [         RV                  R                  S
9m
T
R9                  5         T
RA                  5          S n	A	g S n	A	ff = f)NzSave the figure)titletransient_foractionr   z*.znotify::filterc                    > TR                  5       R                  5       nTR                  R                  5       U   S   nTR	                  [        [        TR                  5       5      R                  SU 35      5      5        g )Nr   .)	
get_filterget_namerD  get_supported_filetypes_groupedset_current_namer0  r   get_current_namewith_suffix)r   r   fmtdialogrN   s      r#   on_notify_filter<NavigationToolbar2GTK3.save_figure.<locals>.on_notify_filterr  sl    $$&//1D++==?EaHC##D0023??!C5	JKMr%   zsavefig.directoryTr   )format)rO  rE  message_typer   ),r   FileChooserDialogrD  get_toplevelFileChooserActionSAVESTOCK_CANCELResponseTypeCANCEL
STOCK_SAVEOKrU  items
FileFilterset_nameadd_pattern
add_filterget_default_filetype
set_filter	functoolspartialr@   set_current_foldermplrcParamsrV  get_default_filenameset_do_overwrite_confirmationrunget_filenamerS  rT  rV   ospathdirnamer0   savefig	ExceptionMessageDialogr0  MessageTypeERRORButtonsType)rN   r   r   fmtsffrY  r[  responsefnameerZ  s   `         @r#   save_figure"NavigationToolbar2GTK3.save_figure`  s~   &&#++224((--%%s'7'7'>'>^^s'7'7':':<	
 ;;>>@FFH D!BKKC5z* b!{{//1T9!!"% I 
		6>>+;	<	M 
=	M 	!!#,,/B"CD @ @ BC,,T2::<##% kk99;BKKMJ1Ms''***<<+,020FCLL,-	KK&&u&9L 	&&"kk668s1v __22COO<N<NPF JJLNN	s   -$K 
M.BM))M.)r(  r@  N)r	  r
  r  r  r=   r  r  r   r%   r#   r  r  /  s    .6`/r%   r  c                   H    \ 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)ToolbarGTK3i  r!  c                    [         R                  " X5        [        R                  R                  U 5        U R	                  S[        R
                  R                  5        [        R                  " 5       U l        U R                  R                  [        R                  R                  5        U R                  U R                  SSS5        U R                  5         0 U l        0 U l        g )NorientationFr   )r   r=   r   Boxset_propertyOrientation
HORIZONTALr<  _messagerA  rB  r   pack_endrC  _groups
_toolitems)rN   toolmanagers     r#   r=   ToolbarGTK3.__init__  s    ""45-)C)CD		!!#"3"3"9"9:dmmUE15r%   c                 |   U(       a  [         R                  " 5       nO[         R                  " 5       nUR                  U5        Ubf  [         R                  R                  [        R                  R                  U5      [         R                  R                  5      nUR                  U5        Uc  SnU R                  XrU5        UR                  SU R                  U5      n	UR                  U5        UR!                  5         U R"                  R%                  U/ 5        U R"                  U   R'                  Xy45        g )Nrs   r$  )r   r4  r5  r6  r,  r-  r   r.  r/  r2  r3  r7  _add_buttonr@   
_call_toolr:  rC  r  
setdefaultappend)
rN   r   grouppositionrG  descriptiontoggler   rI  signals
             r#   add_toolitemToolbarGTK3.add_toolitem  s    ))+F^^%F!II,,''
3**,E ""5)H1	4??DA,""4,$$f%56r%   c                    X R                   ;  a  U R                   (       a  U R                  5         [        R                  " 5       nUR	                  [        R
                  R                  5        U R                  USSS5        UR                  5         X@R                   U'   U R                   U   R                  X5        g )NFr   )
r  _add_separatorr   Toolbarr%  r&  r'  
pack_startrC  r*  )rN   r   r  r  toolbars        r#   r  ToolbarGTK3._add_button  s    $||##%kkmGc..445OOGUE15")LLU""64r%   c                 &    U R                  U5        g r   )trigger_tool)rN   btnr   s      r#   r  ToolbarGTK3._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)rN   r   toggledrJ  r  s        r#   toggle_toolitemToolbarGTK3.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  r   )rN   r   rJ  _signalr  s        r#   remove_toolitemToolbarGTK3.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                  USSS5        UR                  5         g )Nr  FTr   )r   	Separatorr  r  VERTICALr  rC  )rN   seps     r#   r  ToolbarGTK3._add_separator  sB    mmo(@(@AUD!,r%   c                 :    U R                   R                  U5        g r   )r  r6  )rN   ss     r#   set_messageToolbarGTK3.set_message  s    "r%   )r  r  r  N)r	  r
  r  r  _icon_extensionr=   r  r  r  r  r  r  r  r  r   r%   r#   r  r    s/    %O	70	5 -9#r%   r  c                       \ rS rSrS rSrg)SaveFigureGTK3i  c                 J    [         R                  U R                  5       5        g r   )r  r  "_make_classic_style_pseudo_toolbarr   s      r#   triggerSaveFigureGTK3.trigger  s    **335	7r%   r   Nr	  r
  r  r  r  r  r   r%   r#   r  r    s    7r%   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	HelpGTK3i  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 `FigureCanvasGTK3._get_key`.
	BackSpace	Page_DownPage_UpScroll_Lock)	backspacepagedownpageupscroll_lockr   Nrs   <>r   z<shift> )splitlen
capitalizeisupperr   )rN   r   specialpartsmodr   s         r#   _normalize_shortcutHelpGTK3._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 `FigureCanvasGTK3._get_key`).
- The shortcut window only shows keyboard shortcuts, not mouse buttons.
zcmd+zMouseButton.)
startswith)rN   r   s     r#   _is_valid_shortcutHelpGTK3._is_valid_shortcut  s      S G)G%GGr%   c           	        ^  [         R                  " 5       n[        T R                  R                  R                  5       5       H  u  p#UR                  (       d  M  [         R                  " 5       nUR                  U5        UR                  S S 5        [         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%                  5         UR                  U5        UR'                  5         g )Nc                 $    U R                  S5      $ )NF)set_visible)r{   datas     r#   r-   1HelpGTK3._show_shortcuts_window.<locals>.<lambda>  s    f.@.@.Gr%    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   rN   s     r#   r   2HelpGTK3._show_shortcuts_window.<locals>.<genexpr>  s6      %5E..s3 2D,,S11Es   99)acceleratorrN  subtitleHelpT)rN  modalrO  )r   ShortcutsSectionsortedr  toolsrh  r  ShortcutsGroupr?  forallShortcutsShortcutr   get_tool_keymapr   ShortcutsWindow_figurerD  r`  showrC  )rN   sectionr   toolr  shortcutrY   s   `      r#   _show_shortcuts_windowHelpGTK3._show_shortcuts_window
  s   &&( !1!1!7!7!=!=!?@JD## &&(EKKLLGN,,HH %5#//??E%5 5 ii))+H IIh) A, $$,,--::<> 	

7r%   c           	      6   [         R                  " U R                  R                  R	                  5       S[         R
                  R                  [         R                  R                  U R                  5       SS9nUR                  5         UR                  5         g )Nr   r  )rN  )r   r}  r  rD  r`  r~  INFOr  rg  _get_help_textrv  rV   )rN   rZ  s     r#   _show_shortcuts_dialogHelpGTK3._show_shortcuts_dialog,  sf    ""LL,,.s##S__%7%79L9L9N 	

r%   c                 x    [         R                  " SSS5      c  U R                  5         g U R                  5         g )Nr      r   )r   check_versionr  r  )rN   r   s     r#   r  HelpGTK3.trigger4  s/    QA&.'')'')r%   r   N)
r	  r
  r  r  r  r  r  r  r  r  r   r%   r#   r  r    s    #4H D*r%   r  c                       \ rS rSrS rSrg)ToolCopyToClipboardGTK3i;  c                 
   [         R                  R                  [        R                  5      nU R
                  R                  5       nUR                  5       u  pVpx[        R                  " XEXgU5      n	UR                  U	5        g r   )
r   	Clipboardgetr   SELECTION_CLIPBOARDrD  rc   get_geometrypixbuf_get_from_window	set_image)
rN   r   r   	clipboardrY   rh   ri   r   rl   pbs
             r#   r  ToolCopyToClipboardGTK3.trigger=  sc    MM%%c&=&=>	'')$113e''1VDBr%   r   Nr  r   r%   r#   r	  r	  ;  s     r%   r	  c                       \ rS rSr\r\rSrg)r+   iL  r   N)	r	  r
  r  r  r  _toolbar2_classr  _toolmanager_toolbar_classr  r   r%   r#   r+   r+   L  s    ,O!,r%   r+   c                       \ rS rSr\r\rSrg)_BackendGTK3iQ  r   N)	r	  r
  r  r  r'   FigureCanvasr+   FigureManagerr  r   r%   r#   r  r  Q  s    #L%Mr%   r  )>ro  loggingrx  pathlibr   
matplotlibrr  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   	TimerGTK3	getLoggerr	  _logcacher$   DrawingArear'   r  r  r  r  _register_tool_classSaveFigureBaser  ToolHelpBaser  ToolCopyToClipboardBaser	  ConfigureSubplotsGTKRubberbandGTKr+   exportr  r   r%   r#   <module>r1     s     	   1 1B B BF8  ue$ 7 6   " 9 9@$' @$F`3S[[ `FI##SWW I#X ##$457]11 7 67 ##$45R*})) R* 6R*j ##$45 mCC   6    " "l779  " "l002-) -
 &; & &I  F
;
<#EF    a.a s.   F, 	G ,G 2	F;;G G		GG