ó
    {ñ:i.  ã                   ón   • S SK JrJrJrJr   " S S5      r " S S\5      r " S S5      r " S S	5      rg
)é    )Ú_apiÚbackend_toolsÚcbookÚwidgetsc                   ó"   • \ rS rSrSrSS jrSrg)Ú	ToolEventé   z)Event for tool manipulation (add/remove).Nc                 ó4   • Xl         X l        X0l        X@l        g ©N)ÚnameÚsenderÚtoolÚdata)Úselfr   r   r   r   s        Ú^/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/matplotlib/backend_managers.pyÚ__init__ÚToolEvent.__init__   s   € ØŒ	ØŒØŒ	Ø�	ó    )r   r   r   r   r   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__© r   r   r   r      s
   † Ù3÷r   r   c                   ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚToolTriggerEventé   z/Event to inform that a tool has been triggered.c                 ó2   >• [         TU ]  XX55        X@l        g r   )Úsuperr   Úcanvasevent)r   r   r   r   r"   r   Ú	__class__s         €r   r   ÚToolTriggerEvent.__init__   s   ø€ Ü‰Ñ˜ tÔ2Ø&Õr   ©r"   )NN)r   r   r   r   r   r   r   Ú__classcell__)r#   s   @r   r   r      s   ø† Ù9÷'õ 'r   r   c                   ó   • \ rS rSrSrS rSrg)ÚToolManagerMessageEventé   zg
Event carrying messages from toolmanager.

Messages usually get displayed to the user by the toolbar.
c                 ó(   • Xl         X l        X0l        g r   )r   r   Úmessage)r   r   r   r+   s       r   r   Ú ToolManagerMessageEvent.__init__   s   € ØŒ	ØŒØ�r   )r+   r   r   Nr   r   r   r   r(   r(      s   † ñõ
r   r(   c                   óä   • \ rS rSrSrSS jr\S 5       r\S 5       r\R                  S 5       rSS jr
S	 rS
 rSS jr\S 5       rS rS rS rS rS rS rSS jrS r\S 5       rSS jrSrg)ÚToolManageré    av  
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                 ó  • S U l         0 U l        0 U l        0 U l        [        R
                  " 5       U l        [        R                  " 5       U l	        [        R                  " 5       U l
        S U l        U R                  U5        g r   )Ú_key_press_handler_idÚ_toolsÚ_keysÚ_toggledr   ÚCallbackRegistryÚ
_callbacksr   ÚLockDrawÚkeypresslockÚmessagelockÚ_figureÚ
set_figure©r   Úfigures     r   r   ÚToolManager.__init__.   sf   € à%)ˆÔ"àˆŒØˆŒ
ØˆŒÜ×0Ò0Ó2ˆŒô $×,Ò,Ó.ˆÔÜ"×+Ò+Ó-ˆÔàˆŒØ�‰˜Õr   c                 óR   • U R                   (       d  gU R                   R                  $ )z Canvas managed by FigureManager.N)r:   Úcanvas©r   s    r   r@   ÚToolManager.canvas>   s   € ð �|�|ØØ�|‰|×"Ñ"Ð"r   c                 ó   • U R                   $ )zFigure that holds the canvas.)r:   rA   s    r   r=   ÚToolManager.figureE   s   € ð �|‰|Ðr   c                 ó&   • U R                  U5        g r   )r;   r<   s     r   r=   rD   J   s   € à�‰˜Õr   c                 ó>  • U R                   (       a%  U R                  R                  U R                   5        Xl        U(       a+  U R                  R	                  SU R
                  5      U l         U(       a(  U R                  R                  5        H	  nXl        M     gg)z”
Bind the given figure to the tools.

Parameters
----------
figure : `.Figure`
update_tools : bool, default: True
    Force tools to update figure.
Úkey_press_eventN)	r1   r@   Úmpl_disconnectr:   Úmpl_connectÚ
_key_pressr2   Úvaluesr=   )r   r=   Úupdate_toolsr   s       r   r;   ÚToolManager.set_figureN   sq   € ð ×%×%Ø�K‰K×&Ñ& t×'AÑ'AÔBØŒÞØ)-¯©×)@Ñ)@Ø! 4§?¡?ó*4ˆDÔ&æØŸ™×*Ñ*Ö,�Ø$–ò -ð r   c                 ó8   • U R                   R                  X5      $ )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`.
)r6   Úconnect)r   ÚsÚfuncs      r   Útoolmanager_connectÚToolManager.toolmanager_connectb   s   € ð8 �‰×&Ñ& qÓ/Ð/r   c                 ó8   • U R                   R                  U5      $ )z³
Disconnect callback id *cid*.

Example usage::

    cid = toolmanager.toolmanager_connect('tool_trigger_zoom', onpress)
    #...later
    toolmanager.toolmanager_disconnect(cid)
)r6   Ú
disconnect)r   Úcids     r   Útoolmanager_disconnectÚ"ToolManager.toolmanager_disconnect€   s   € ð �‰×)Ñ)¨#Ó.Ð.r   c                 ó`   • Uc  U nSn[        X2U5      nU R                  R                  X45        g)z!Emit a `ToolManagerMessageEvent`.NÚtool_message_event)r(   r6   Úprocess)r   r+   r   rP   Úevents        r   Úmessage_eventÚToolManager.message_eventŒ   s/   € à‰>ØˆFà ˆÜ'¨°7Ó;ˆØ�‰×Ñ Õ)r   c                 ó   • U R                   $ )zCurrently toggled tools.)r4   rA   s    r   Úactive_toggleÚToolManager.active_toggle•   s   € ð �}‰}Ðr   c                 ó|   • U R                   R                  5        VVs/ s H  u  p#X1:X  d  M  UPM     nnnU$ s  snnf )z·
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.
)r3   Úitems)r   r   ÚkÚiÚkeyss        r   Úget_tool_keymapÚToolManager.get_tool_keymapš   s7   € ð #Ÿj™j×.Ñ.Ô0Ô>Ò0‘d�a°A±I—Ñ0ˆÑ>Øˆùó ?s   ž8­8c                 óN   • U R                  U5       H  nU R                  U	 M     g r   )rg   r3   )r   r   rd   s      r   Ú_remove_keysÚToolManager._remove_keys¬   s"   € Ø×%Ñ% dÖ+ˆAØ—
‘
˜1’ò ,r   c           	      ó6  • XR                   ;  a  [        U< S35      eU R                  U5        [        U[        5      (       a  U/nU HL  nX0R
                  ;   a,  [        R                  " SU SU R
                  U    SU 35        XR
                  U'   MN     g)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)r2   ÚKeyErrorrj   Ú
isinstanceÚstrr3   r   Úwarn_external)r   r   Úkeyrd   s       r   Úupdate_keymapÚToolManager.update_keymap°   s�   € ð —{‘{Ó"Ü˜d™X ]Ð3Ó4Ð4Ø×Ñ˜$ÔÜ�cœ3×ÑØ�%ˆCÛˆAØ—J‘J‹Ü×"Ò"Ø˜1˜#˜^¨D¯J©J°q©M¨?¸$¸t¸fÐEôGà �J‰J�q‹Mò	 r   c                 ó  • U R                  U5      n[        USS5      (       a  U R                  US5        U R                  U5        [	        SX5      nU R
                  R                  UR                  U5        U R                  U	 g)zS
Remove tool named *name*.

Parameters
----------
name : str
    Name of the tool.
ÚtoggledFÚtoolmanagerÚtool_removed_eventN)	Úget_toolÚgetattrÚtrigger_toolrj   r   r6   r[   r   r2   )r   r   r   r\   s       r   Úremove_toolÚToolManager.remove_toolÆ   sp   € ð �}‰}˜TÓ"ˆÜ�4˜ E×*Ñ*Ø×Ñ˜d MÔ2Ø×Ñ˜$ÔÜÐ.°Ó;ˆØ�‰×Ñ §
¡
¨EÔ2Ø�K‰K˜Ñr   c                 óR  • [         R                  " [        U R                  5      U5      nU(       d  [	        S[        U5      -  5      eXR                  ;   a%  [        R                  " S5        U R                  U   $ U" X/UQ70 UD6nX`R                  U'   UR                  b  U R                  XR                  5        [        U[         R                  5      (       a|  UR                  c%  U R                  R                  S[!        5       5        O&U R                  R                  UR                  S5        UR"                  (       a  U R%                  USS5        UR'                  U R(                  5        [+        SX5      nU R,                  R/                  UR0                  U5        U$ )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Útyper@   Ú
ValueErrorro   r2   r   rp   Údefault_keymaprr   rn   ÚToolToggleBaseÚradio_groupr4   Ú
setdefaultÚsetru   Ú_handle_toggler;   r=   r   r6   r[   r   )r   r   r   ÚargsÚkwargsÚtool_clsÚtool_objr\   s           r   Úadd_toolÚToolManager.add_tool×   sO  € ô. !×1Ò1´$°t·{±{Ó2CÀTÓJˆÞÜÐ>ÄÀTÃÑJÓKÐKà—;‘;ÓÜ×Òð  3ô 4à—;‘;˜tÑ$Ð$á˜DÐ8¨Ò8°Ñ8ˆØ$�‰�DÑà×"Ñ"Ñ.Ø×Ñ˜t×%<Ñ%<Ô=ô �h¤× <Ñ <×=Ñ=ð ×#Ñ#Ñ+Ø—‘×(Ñ(¨¬s«uÕ5à—‘×(Ñ(¨×)=Ñ)=¸tÔDð ××Ø×#Ñ# H¨d°DÔ9Ø×Ñ˜DŸK™KÔ(äÐ,¨dÓ=ˆØ�‰×Ñ §
¡
¨EÔ2àˆr   c                 óð  • UR                   nUco  UR                  U R                  S   ;   a)  U R                  S   R                  UR                  5        gU R                  S   R	                  UR                  5        gU R                  U   UR                  :X  a  SnOJU R                  U   c  UR                  nO-U R                  U R                  U   U UU5        UR                  nXPR                  U'   g)zÿ
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)r„   r   r4   ÚremoveÚaddrz   )r   r   r"   r   r„   ru   s         r   r‡   Ú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                 ó  • U R                  U5      nUc  gUc  U n[        U[        R                  5      (       a  U R	                  XSU5        UR                  X#U5        SU-  n[        XbXSU5      nU R                  R                  Xg5        g)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)	rx   rn   r   rƒ   r‡   Útriggerr   r6   r[   )r   r   r   r"   r   r   rP   r\   s           r   rz   ÚToolManager.trigger_tool;  s   € ð �}‰}˜TÓ"ˆØ‰<Øà‰>ØˆFä�dœM×8Ñ8×9Ñ9Ø×Ñ °4Ô8à�‰�V¨$Ô/à Ñ$ˆÜ  ¨D¸tÓDˆØ�‰×Ñ Õ)r   c                 óÐ   • UR                   b  U R                  R                  5       (       a  g U R                  R	                  UR                   S 5      nUc  g U R                  X!S9  g )Nr%   )rq   r8   Úlockedr3   Úgetrz   )r   r\   r   s      r   rJ   ÚToolManager._key_pressZ  sT   € Ø�9‰9Ñ × 1Ñ 1× 8Ñ 8× :Ñ :Øà�z‰z�~‰~˜eŸi™i¨Ó.ˆØ‰<ØØ×Ñ˜$ÐÒ2r   c                 ó   • U R                   $ )z,A dict mapping tool name -> controlled tool.)r2   rA   s    r   ÚtoolsÚToolManager.toolsc  s   € ð �{‰{Ðr   c                 óø   • [        U[        R                  5      (       a  UR                  U R                  ;   a  U$ XR                  ;  a"  U(       a  [
        R                  " SU< 35        gU R                  U   $ )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)rn   r   ÚToolBaser   r2   r   rp   )r   r   Úwarns      r   rx   ÚToolManager.get_toolh  sd   € ô& �tœ]×3Ñ3×4Ñ4Ø—I‘I §¡Ó,ØˆKØ—{‘{Ó"ÞÜ×"Ò"Ø8¸¹ÐAôCàØ�{‰{˜4Ñ Ð r   )r6   r:   r1   r3   r4   r2   r8   r9   r   )T)NNN)r   r   r   r   r   r   Úpropertyr@   r=   Úsetterr;   rR   rW   r]   r`   rg   rj   rr   r{   rŒ   r‡   rz   rJ   rš   rx   r   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   