Ë
    ¨eh.  ã                   ón   — d dl mZmZmZmZ  G d„ d«      Z G d„ de«      Z G d„ d«      Z G d„ d	«      Zy
)é    )Ú_apiÚbackend_toolsÚcbookÚwidgetsc                   ó   — e Zd ZdZdd„Zy)Ú	ToolEventz)Event for tool manipulation (add/remove).Nc                 ó<   — || _         || _        || _        || _        y ©N)ÚnameÚsenderÚtoolÚdata)Úselfr   r   r   r   s        úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/backend_managers.pyÚ__init__zToolEvent.__init__   s   € ØˆŒ	ØˆŒØˆŒ	Øˆ�	ó    r
   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s
   „ Ù3ôr   r   c                   ó$   ‡ — e Zd ZdZdˆ fd„	Zˆ xZS )ÚToolTriggerEventz/Event to inform that a tool has been triggered.c                 ó8   •— t         ‰| �  ||||«       || _        y r
   )Úsuperr   Úcanvasevent)r   r   r   r   r   r   Ú	__class__s         €r   r   zToolTriggerEvent.__init__   s   ø€ Ü‰Ñ˜˜v t¨TÔ2Ø&ˆÕr   )NN)r   r   r   r   r   Ú__classcell__)r   s   @r   r   r      s   ø„ Ù9÷'ñ 'r   r   c                   ó   — e Zd ZdZd„ Zy)ÚToolManagerMessageEventzs
    Event carrying messages from toolmanager.

    Messages usually get displayed to the user by the toolbar.
    c                 ó.   — || _         || _        || _        y r
   )r   r   Úmessage)r   r   r   r#   s       r   r   z ToolManagerMessageEvent.__init__   s   € ØˆŒ	ØˆŒØˆ�r   Nr   r   r   r   r!   r!      s   „ ñó
r   r!   c                   óÒ   — e Zd ZdZdd„Zed„ «       Zed„ «       Zej                  d„ «       Zdd„Z	d„ Z
d	„ Zdd
„Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zed„ «       Zdd„Zy)ÚToolManageraž  
    Manager for actions triggered by user interactions (key press, toolbar
    clicks, ...) on a Figure.

    Attributes
    ----------
    figure : `.Figure`
    keypresslock : `~matplotlib.widgets.LockDraw`
        `.LockDraw` object to know if the `canvas` key_press_event is locked.
    messagelock : `~matplotlib.widgets.LockDraw`
        `.LockDraw` object to know if the message is available to write.
    Nc                 ó  — d | _         i | _        i | _        i | _        t	        j
                  «       | _        t        j                  «       | _	        t        j                  «       | _
        d | _        | j                  |«       y r
   )Ú_key_press_handler_idÚ_toolsÚ_keysÚ_toggledr   ÚCallbackRegistryÚ
_callbacksr   ÚLockDrawÚkeypresslockÚmessagelockÚ_figureÚ
set_figure©r   Úfigures     r   r   zToolManager.__init__.   sf   € à%)ˆÔ"àˆŒØˆŒ
ØˆŒÜ×0Ñ0Ó2ˆŒô $×,Ñ,Ó.ˆÔÜ"×+Ñ+Ó-ˆÔàˆŒØ�‰˜Õr   c                 óH   — | j                   sy| j                   j                  S )z Canvas managed by FigureManager.N)r0   Úcanvas©r   s    r   r5   zToolManager.canvas>   s   € ð �|Š|ØØ�|‰|×"Ñ"Ð"r   c                 ó   — | j                   S )zFigure that holds the canvas.)r0   r6   s    r   r3   zToolManager.figureE   s   € ð �|‰|Ðr   c                 ó&   — | j                  |«       y r
   )r1   r2   s     r   r3   zToolManager.figureJ   s   € à�‰˜Õr   c                 ó   — | j                   r%| j                  j                  | j                   «       || _        |r+| j                  j	                  d| j
                  «      | _         |r'| j                  j                  «       D ]	  }||_        Œ yy)zÌ
        Bind the given figure to the tools.

        Parameters
        ----------
        figure : `.Figure`
        update_tools : bool, default: True
            Force tools to update figure.
        Úkey_press_eventN)	r'   r5   Úmpl_disconnectr0   Úmpl_connectÚ
_key_pressr(   Úvaluesr3   )r   r3   Úupdate_toolsr   s       r   r1   zToolManager.set_figureN   sz   € ð ×%Ò%Ø�K‰K×&Ñ& t×'AÑ'AÔBØˆŒÙØ)-¯©×)@Ñ)@Ø! 4§?¡?ó*4ˆDÔ&áØŸ™×*Ñ*Ó,ò %�Ø$�•ñ%ð r   c                 ó:   — | j                   j                  ||«      S )aÕ  
        Connect event with string *s* to *func*.

        Parameters
        ----------
        s : str
            The name of the event. The following events are recognized:

            - 'tool_message_event'
            - 'tool_removed_event'
            - 'tool_added_event'

            For every tool added a new event is created

            - 'tool_trigger_TOOLNAME', where TOOLNAME is the id of the tool.

        func : callable
            Callback function for the toolmanager event with signature::

                def func(event: ToolEvent) -> Any

        Returns
        -------
        cid
            The callback id for the connection. This can be used in
            `.toolmanager_disconnect`.
        )r,   Úconnect)r   ÚsÚfuncs      r   Útoolmanager_connectzToolManager.toolmanager_connectb   s   € ð8 �‰×&Ñ& q¨$Ó/Ð/r   c                 ó8   — | j                   j                  |«      S )zã
        Disconnect callback id *cid*.

        Example usage::

            cid = toolmanager.toolmanager_connect('tool_trigger_zoom', onpress)
            #...later
            toolmanager.toolmanager_disconnect(cid)
        )r,   Ú
disconnect)r   Úcids     r   Útoolmanager_disconnectz"ToolManager.toolmanager_disconnect€   s   € ð �‰×)Ñ)¨#Ó.Ð.r   c                 ób   — |€| }d}t        |||«      }| j                  j                  ||«       y)z!Emit a `ToolManagerMessageEvent`.NÚtool_message_event)r!   r,   Úprocess)r   r#   r   rB   Úevents        r   Úmessage_eventzToolManager.message_eventŒ   s3   € àˆ>ØˆFà ˆÜ'¨¨6°7Ó;ˆØ�‰×Ñ  5Õ)r   c                 ó   — | j                   S )zCurrently toggled tools.)r*   r6   s    r   Úactive_togglezToolManager.active_toggle•   s   € ð �}‰}Ðr   c                 óv   — | j                   j                  «       D ��cg c]  \  }}||k(  sŒ|‘Œ }}}|S c c}}w )a  
        Return the keymap associated with the specified tool.

        Parameters
        ----------
        name : str
            Name of the Tool.

        Returns
        -------
        list of str
            List of keys associated with the tool.
        )r)   Úitems)r   r   ÚkÚiÚkeyss        r   Úget_tool_keymapzToolManager.get_tool_keymapš   s8   € ð #Ÿj™j×.Ñ.Ó0×>‘d�a˜°A¸³I’Ð>ˆÑ>Øˆùó ?s   ž5¬5c                 óJ   — | j                  |«      D ]  }| j                  |= Œ y r
   )rU   r)   )r   r   rR   s      r   Ú_remove_keyszToolManager._remove_keys¬   s'   € Ø×%Ñ% dÓ+ò 	ˆAØ—
‘
˜1‘ñ	r   c           	      ó"  — || j                   vrt        |›d�«      ‚| j                  |«       t        |t        «      r|g}|D ]J  }|| j
                  v r+t        j                  d|› d| j
                  |   › d|› �«       || j
                  |<   ŒL y)zì
        Set the keymap to associate with the specified tool.

        Parameters
        ----------
        name : str
            Name of the Tool.
        key : str or list of str
            Keys to associate with the tool.
        z not in ToolszKey z changed from z to N)r(   ÚKeyErrorrW   Ú
isinstanceÚstrr)   r   Úwarn_external)r   r   ÚkeyrR   s       r   Úupdate_keymapzToolManager.update_keymap°   s•   € ð �t—{‘{Ñ"Ü˜d˜X ]Ð3Ó4Ð4Ø×Ñ˜$ÔÜ�cœ3ÔØ�%ˆCØò 	!ˆAØ�D—J‘J‰Ü×"Ñ"Ø˜1˜#˜^¨D¯J©J°q©M¨?¸$¸t¸fÐEôGà ˆD�J‰J�qŠMñ		!r   c                 ó  — | j                  |«      }t        |dd«      r| j                  |d«       | j                  |«       t	        d| |«      }| j
                  j                  |j                  |«       | j                  |= y)zƒ
        Remove tool named *name*.

        Parameters
        ----------
        name : str
            Name of the tool.
        ÚtoggledFÚtoolmanagerÚtool_removed_eventN)	Úget_toolÚgetattrÚtrigger_toolrW   r   r,   rK   r   r(   )r   r   r   rL   s       r   Úremove_toolzToolManager.remove_toolÆ   so   € ð �}‰}˜TÓ"ˆÜ�4˜ EÔ*Ø×Ñ˜d MÔ2Ø×Ñ˜$ÔÜÐ.°°dÓ;ˆØ�‰×Ñ §
¡
¨EÔ2Ø�K‰K˜Ñr   c                 ó2  — t        j                  t        | j                  «      |«      }|st	        dt        |«      z  «      ‚|| j                  v r$t        j                  d«       | j                  |   S  || |g|¢­i |¤Ž}|| j                  |<   |j                  �| j                  ||j                  «       t        |t         j                  «      rv|j                  €%| j                  j                  dt!        «       «       n&| j                  j                  |j                  d«       |j"                  r| j%                  |dd«       |j'                  | j(                  «       t+        d| |«      }| j,                  j/                  |j0                  |«       |S )a®  
        Add *tool* to `ToolManager`.

        If successful, adds a new event ``tool_trigger_{name}`` where
        ``{name}`` is the *name* of the tool; the event is fired every time the
        tool is triggered.

        Parameters
        ----------
        name : str
            Name of the tool, treated as the ID, has to be unique.
        tool : type
            Class of the tool to be added.  A subclass will be used
            instead if one was registered for the current canvas class.
        *args, **kwargs
            Passed to the *tool*'s constructor.

        See Also
        --------
        matplotlib.backend_tools.ToolBase : The base class for tools.
        zImpossible to find class for %sz;A "Tool class" with the same name already exists, not addedNÚtool_added_event)r   Ú_find_tool_classÚtyper5   Ú
ValueErrorr[   r(   r   r\   Údefault_keymapr^   rZ   ÚToolToggleBaseÚradio_groupr*   Ú
setdefaultÚsetr`   Ú_handle_toggler1   r3   r   r,   rK   r   )r   r   r   ÚargsÚkwargsÚtool_clsÚtool_objrL   s           r   Úadd_toolzToolManager.add_tool×   sV  € ô. !×1Ñ1´$°t·{±{Ó2CÀTÓJˆÙÜÐ>ÄÀTÃÑJÓKÐKà�4—;‘;ÑÜ×Ñð  3ô 4à—;‘;˜tÑ$Ð$á˜D $Ð8¨Ò8°Ñ8ˆØ$ˆ�‰�DÑà×"Ñ"Ð.Ø×Ñ˜t X×%<Ñ%<Ô=ô �h¤× <Ñ <Ô=ð ×#Ñ#Ð+Ø—‘×(Ñ(¨¬s«uÕ5à—‘×(Ñ(¨×)=Ñ)=¸tÔDð ×ÒØ×#Ñ# H¨d°DÔ9Ø×Ñ˜DŸK™KÔ(äÐ,¨d°HÓ=ˆØ�‰×Ñ §
¡
¨EÔ2àˆr   c                 óè  — |j                   }|€m|j                  | j                  d   v r)| j                  d   j                  |j                  «       y| j                  d   j	                  |j                  «       y| j                  |   |j                  k(  rd}nI| j                  |   €|j                  }n-| j                  | j                  |   | ||«       |j                  }|| j                  |<   y)aO  
        Toggle tools, need to untoggle prior to using other Toggle tool.
        Called from trigger_tool.

        Parameters
        ----------
        tool : `.ToolBase`
        canvasevent : Event
            Original Canvas event or None.
        data : object
            Extra data to pass to the tool when triggering.
        N)rn   r   r*   ÚremoveÚaddre   )r   r   r   r   rn   r`   s         r   rq   zToolManager._handle_toggle  sá   € ð ×&Ñ&ˆð ÐØ�y‰y˜DŸM™M¨$Ñ/Ñ/Ø—‘˜dÑ#×*Ñ*¨4¯9©9Ô5ð ð —‘˜dÑ#×'Ñ'¨¯	©	Ô2Øð �=‰=˜Ñ%¨¯©Ò2Ø‰Gð �]‰]˜;Ñ'Ð/Ø—i‘i‰Gð ×Ñ˜dŸm™m¨KÑ8Ø"Ø)Ø"ô$ð —i‘iˆGð &-ˆ�‰�kÒ"r   c                 ó  — | j                  |«      }|€y|€| }t        |t        j                  «      r| j	                  |||«       |j                  |||«       d|z  }t        |||||«      }| j                  j                  ||«       y)a‰  
        Trigger a tool and emit the ``tool_trigger_{name}`` event.

        Parameters
        ----------
        name : str
            Name of the tool.
        sender : object
            Object that wishes to trigger the tool.
        canvasevent : Event
            Original Canvas event or None.
        data : object
            Extra data to pass to the tool when triggering.
        Nztool_trigger_%s)	rc   rZ   r   rm   rq   Útriggerr   r,   rK   )r   r   r   r   r   r   rB   rL   s           r   re   zToolManager.trigger_tool;  s†   € ð �}‰}˜TÓ"ˆØˆ<Øàˆ>ØˆFä�dœM×8Ñ8Ô9Ø×Ñ  k°4Ô8à�‰�V˜[¨$Ô/à Ñ$ˆÜ   F¨D°+¸tÓDˆØ�‰×Ñ  5Õ)r   c                 óÊ   — |j                   �| j                  j                  «       ry | j                  j	                  |j                   d «      }|€y | j                  ||¬«       y )N)r   )r]   r.   Úlockedr)   Úgetre   )r   rL   r   s      r   r=   zToolManager._key_pressZ  sS   € Ø�9‰9Ð × 1Ñ 1× 8Ñ 8Ô :Øà�z‰z�~‰~˜eŸi™i¨Ó.ˆØˆ<ØØ×Ñ˜$¨EÐÕ2r   c                 ó   — | j                   S )z,A dict mapping tool name -> controlled tool.)r(   r6   s    r   ÚtoolszToolManager.toolsc  s   € ð �{‰{Ðr   c                 óÚ   — t        |t        j                  «      r|j                  | j                  v r|S || j                  vr|rt        j                  d|›�«       y| j                  |   S )aû  
        Return the tool object with the given name.

        For convenience, this passes tool objects through.

        Parameters
        ----------
        name : str or `.ToolBase`
            Name of the tool, or the tool itself.
        warn : bool, default: True
            Whether a warning should be emitted it no tool with the given name
            exists.

        Returns
        -------
        `.ToolBase` or None
            The tool or None if no tool with the given name exists.
        z"ToolManager does not control tool N)rZ   r   ÚToolBaser   r(   r   r\   )r   r   Úwarns      r   rc   zToolManager.get_toolh  sc   € ô& �tœ]×3Ñ3Ô4Ø—I‘I §¡Ñ,ØˆKØ�t—{‘{Ñ"ÙÜ×"Ñ"Ø8¸¸ÐAôCàØ�{‰{˜4Ñ Ð r   r
   )T)NNN)r   r   r   r   r   Úpropertyr5   r3   Úsetterr1   rD   rH   rM   rO   rU   rW   r^   rf   rv   rq   re   r=   r€   rc   r   r   r   r%   r%       s·   „ ñó ð  ñ#ó ð#ð ñó ðð ‡]�]ñ ó ð ó%ò(0ò<
/ó*ð ñó ðòò$ò!ò,ò"7òr)-óV*ò>3ð ñó ðô!r   r%   N)	Ú
matplotlibr   r   r   r   r   r   r!   r%   r   r   r   ú<module>r‡      s7   ðß :Ó :÷ñ ô'�yô '÷	ñ 	÷c!ò c!r   