o
    j
,                  
   @   sT  d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	 ddl
mZmZmZmZmZ ddlmZ ddlZddlmZmZmZmZ zed W n eyZ Z zed	edZ[ww eeZdad
d Zdd Z dd Z!G dd deZ"G dd deZ#G dd deZ$G dd deZ%G dd dej&Z'G dd dej(Z)G dd deZ*dS )z)
Common code for GTK3 and GTK4 backends.
    N)_apibackend_toolscbook)Gcf)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2	TimerBase)Cursors)GdkGioGLibGtkZcairoz Gtk-based backends require cairoc                 C   s$   |   D ]}|  qd| _d ad S NT)Zget_windowsclose_created_by_matplotlib_application)appwin r   a/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/backends/_backend_gtk.py_shutdown_application   s   
r   c                  C   s   t d u r?tj } | d u st| ddr=tj stdt	j
dtjja t ddd  t dt t   t  t S | a t S )	Nr   FzInvalid DISPLAY variablezorg.matplotlib.Matplotlib3activatec                  _   s   d S Nr   )argskwargsr   r   r   <lambda>;   s    z%_create_application.<locals>.<lambda>shutdown)r   r   Applicationget_defaultgetattrmplZ_c_internal_utilsZdisplay_is_validRuntimeErrorr   newZApplicationFlagsZ
NON_UNIQUEconnectr   registerr   Z_setup_new_guiapp)r   r   r   r   _create_application-   s   

r'   c                 C   s8   t jtjdtjdtjdtjdtjdtjdtj	di| dS )	NmovepointerdefaultZ	crosshairwaitz	ew-resizez	ns-resize)cursor)
r   Zcheck_getitemr   ZMOVEZHANDPOINTERZSELECT_REGIONZWAITZRESIZE_HORIZONTALZRESIZE_VERTICAL)Z
mpl_cursorr   r   r   mpl_to_gtk_cursor_nameE   s   r.   c                       sD   e Zd ZdZ fddZdd Zdd Zdd	 Z fd
dZ  Z	S )TimerGTKz0Subclass of `.TimerBase` using GTK timer events.c                    s   d | _ t j|i | d S r   )_timersuper__init__)selfr   r   	__class__r   r   r2   T   s   zTimerGTK.__init__c                 C   s   |    t| j| j| _d S r   )_timer_stopr   Ztimeout_addZ	_interval	_on_timerr0   r3   r   r   r   _timer_startX   s   zTimerGTK._timer_startc                 C   s$   | j d urt| j  d | _ d S d S r   )r0   r   Zsource_remover8   r   r   r   r6   ^   s   

zTimerGTK._timer_stopc                 C   s"   | j d ur|   |   d S d S r   )r0   r6   r9   r8   r   r   r   _timer_set_intervalc   s   
zTimerGTK._timer_set_intervalc                    s$   t    | jr| jsdS d | _dS )NTF)r1   r7   	callbacksZ_singler0   r8   r4   r   r   r7   i   s
   
zTimerGTK._on_timer)
__name__
__module____qualname____doc__r2   r9   r6   r:   r7   __classcell__r   r   r4   r   r/   Q   s    r/   c                   @   s   e Zd ZeZdS )_FigureCanvasGTKN)r<   r=   r>   r/   Z
_timer_clsr   r   r   r   rA   u   s    rA   c                       s\   e Zd ZdZ fddZdd Zedd Zdd	 Zd
d Z	dd Z
dd Zdd Z  ZS )_FigureManagerGTKaC  
    Attributes
    ----------
    canvas : `FigureCanvas`
        The FigureCanvas instance
    num : int or str
        The Figure number
    toolbar : Gtk.Toolbar or Gtk.Box
        The toolbar
    vbox : Gtk.VBox
        The Gtk.VBox containing the canvas and toolbar
    window : Gtk.Window
        The Gtk.Window
    c                    s  t    _}t }t   _| j t || |dkr7t	j
dkr'dnd} jttd|  t   _ jdt jj |dkre j j  j   j   j jddd n|d	krw j j  j j  j \}} jd ur|dkr j   j jd
d
d n|d	krt jt jjd}| j  j |  j! \}	}
||
j"7 } j#|| d
 _$ j%d fdd  j%ddd|  fdd t&' r j   j(   j)  d S )N   win32Zpngsvgzimages/matplotlib.ZorientationTr      F)Zvscrollbar_policydestroyc                     
   t  S r   r   rG   r   r8   r   r   r         
 z,_FigureManagerGTK.__init__.<locals>.<lambda>Zdelete_eventzclose-requestrC   rF   c                     rH   r   rI   rJ   r8   r   r   r      rK   )*r   get_major_version_gtk_verr'   ZWindowwindowZ
add_windowr1   r2   sysplatformZset_icon_from_filestrr   Z_get_data_pathBoxZvboxZset_propertyZOrientationZVERTICALaddshowcanvasZ
pack_startZ	set_childprependZget_width_heighttoolbarZpack_endZScrolledWindowZ
PolicyTypeZNEVERappendget_preferred_sizeheightset_default_size_destroyingr%   r"   is_interactiveZ	draw_idleZ
grab_focus)r3   rV   numZgtk_verr   Zicon_extwhswmin_sizenat_sizer4   r8   r   r2      sR   









z_FigureManagerGTK.__init__c                 G   s(   | j rd S d| _ | j  | j  d S r   )r]   rO   rG   rV   r3   r   r   r   r   rG      s
   
z_FigureManagerGTK.destroyc                 C   s`   t d u rd S z&zt   W n ty'   tj }| r&|d | s w W d a d S d a w r   )r   runKeyboardInterruptr   ZMainContextr*   pending	iteration)clscontextr   r   r   start_main_loop   s   


z!_FigureManagerGTK.start_main_loopc                 C   s\   | j   | j  tjd r,ddd| j }t| j | r%| j   d S t	
d d S d S )Nzfigure.raise_window
get_windowZget_surfacerL   z#Cannot raise window yet to be setup)rO   rU   rV   Zdrawr"   ZrcParamsrN   r!   Zpresentr   Zwarn_external)r3   	meth_namer   r   r   rU      s   


z_FigureManagerGTK.showc                 C   s>   dd dd d| j  }|| jr| j  d S | j  d S )Nc                 S   s   |    tjj@ S r   )rm   Z	get_stater   ZWindowStateZ
FULLSCREENr`   r   r   r   r      s   
 z6_FigureManagerGTK.full_screen_toggle.<locals>.<lambda>c                 S   s   |   S r   )is_fullscreenro   r   r   r   r      s    rL   )rN   rO   ZunfullscreenZ
fullscreen)r3   rp   r   r   r   full_screen_toggle   s   
z$_FigureManagerGTK.full_screen_togglec                 C   s
   | j  S r   )rO   Z	get_titler8   r   r   r   get_window_title   s   
z"_FigureManagerGTK.get_window_titlec                 C   s   | j | d S r   )rO   	set_title)r3   titler   r   r   set_window_title      z"_FigureManagerGTK.set_window_titlec                 C   s   t || jj }t || jj }| jr| j \}}||j7 }| j }| jdks7|j|j  kr5dkr@n n	| j	
|| d S | j	|| d S )NrF      )intrV   Zdevice_pixel_ratiorX   rZ   r[   Zget_allocationrN   widthrO   r\   resize)r3   ry   r[   rc   rd   Zcanvas_sizer   r   r   rz      s   

&z_FigureManagerGTK.resize)r<   r=   r>   r?   r2   rG   classmethodrl   rU   rq   rr   ru   rz   r@   r   r   r4   r   rB   y   s    3
rB   c                       sP   e Zd Zdd Zdd Zdd Zdd Z fd	d
Z fddZdd Z	  Z
S )_NavigationToolbar2GTKc                 C   s"   t |}| jd| d d S )Nz<small>z</small>)r   Zmarkup_escape_textmessageZ
set_markup)r3   sescapedr   r   r   set_message  s   
z"_NavigationToolbar2GTK.set_messagec                 C   sJ   | j jjj}|| }|| }dd |||| || fD }| j | d S )Nc                 S   s   g | ]}t |qS r   )rx   ).0valr   r   r   
<listcomp>  s    z:_NavigationToolbar2GTK.draw_rubberband.<locals>.<listcomp>)rV   ZfigureZbboxr[   _draw_rubberband)r3   eventx0y0x1y1r[   rectr   r   r   draw_rubberband  s
   z&_NavigationToolbar2GTK.draw_rubberbandc                 C   s   | j d  d S r   )rV   r   r8   r   r   r   remove_rubberband  rv   z(_NavigationToolbar2GTK.remove_rubberbandc              	   C   s`   dD ]+\}}| j |}|r-||j || jj|k W d    n1 s(w   Y  qd S )N))PanZPAN)ZZoomZZOOM)_gtk_idsgetZhandler_blockZ_signal_handlerZ
set_activemodename)r3   r   ZactiveZbuttonr   r   r   _update_buttons_checked  s   z._NavigationToolbar2GTK._update_buttons_checkedc                       t  j|  |   d S r   )r1   panr   re   r4   r   r   r   %     z_NavigationToolbar2GTK.panc                    r   r   )r1   zoomr   re   r4   r   r   r   )  r   z_NavigationToolbar2GTK.zoomc                 C   s^   | j jdk}| j jt| j d k }d| jv r| jd | d| jv r-| jd | d S d S )Nr   rw   ZBackZForward)Z
_nav_stack_poslenr   Zset_sensitive)r3   Zcan_backwardZcan_forwardr   r   r   set_history_buttons-  s   

z*_NavigationToolbar2GTK.set_history_buttons)r<   r=   r>   r   r   r   r   r   r   r   r@   r   r   r4   r   r|     s    r|   c                   @   s   e Zd Zdd Zdd ZdS )RubberbandGTKc                 C   s   t |  d |||| d S r   )r|   r   "_make_classic_style_pseudo_toolbar)r3   r   r   r   r   r   r   r   r   7  s   zRubberbandGTK.draw_rubberbandc                 C   s   t |   d S r   )r|   r   r   r8   r   r   r   r   ;  s   zRubberbandGTK.remove_rubberbandN)r<   r=   r>   r   r   r   r   r   r   r   6  s    r   c                   @   s   e Zd Zdd ZdS )ConfigureSubplotsGTKc                 G   s   t | d  d S r   )r|   Zconfigure_subplotsre   r   r   r   triggerA  rv   zConfigureSubplotsGTK.triggerN)r<   r=   r>   r   r   r   r   r   r   @  s    r   c                   @   s,   e Zd Zde e e Ze	j
ZdS )_BackendGTKz{}.{}.{}N)r<   r=   r>   formatr   rM   Zget_minor_versionZget_micro_versionZbackend_versionrB   rl   Zmainloopr   r   r   r   r   E  s    
r   )+r?   loggingrP   Z
matplotlibr"   r   r   r   Zmatplotlib._pylab_helpersr   Zmatplotlib.backend_basesr   r   r   r	   r
   Zmatplotlib.backend_toolsr   giZgi.repositoryr   r   r   r   Zrequire_foreignImportErrore	getLoggerr<   _logr   r   r'   r.   r/   rA   rB   r|   ZRubberbandBaser   ZConfigureSubplotsBaser   r   r   r   r   r   <module>   s:    

$ +
