Skip to content

Commit e415d8d

Browse files
OceanWolffariza
authored andcommitted
Made NavigationBase.get_tool() more useful.
1 parent 67a414f commit e415d8d

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

lib/matplotlib/backend_bases.py

+13-9
Original file line numberDiff line numberDiff line change
@@ -3383,7 +3383,7 @@ def remove_tool(self, name):
33833383
Name of the Tool
33843384
"""
33853385

3386-
tool = self._tools[name]
3386+
tool = self.get_tool(name)
33873387
tool.destroy()
33883388

33893389
# If is a toggle tool and toggled, untoggle
@@ -3534,8 +3534,8 @@ def tool_trigger_event(self, name, sender=None, canvasevent=None,
35343534
data : Object
35353535
Extra data to pass to the tool when triggering
35363536
"""
3537-
if name not in self._tools:
3538-
warnings.warn("%s is not a tool controlled by Navigation" % name)
3537+
tool = self.get_tool(name)
3538+
if tool is None:
35393539
return
35403540

35413541
if sender is None:
@@ -3544,16 +3544,15 @@ def tool_trigger_event(self, name, sender=None, canvasevent=None,
35443544
self._trigger_tool(name, sender, canvasevent, data)
35453545

35463546
s = 'tool_trigger_%s' % name
3547-
event = ToolTriggerEvent(s, sender, self._tools[name], canvasevent,
3548-
data)
3547+
event = ToolTriggerEvent(s, sender, tool, canvasevent, data)
35493548
self._callbacks.process(s, event)
35503549

35513550
def _trigger_tool(self, name, sender=None, canvasevent=None, data=None):
35523551
"""Trigger on a tool
35533552
35543553
Method to actually trigger the tool
35553554
"""
3556-
tool = self._tools[name]
3555+
tool = self.get_tool(name)
35573556

35583557
if isinstance(tool, tools.ToolToggleBase):
35593558
self._handle_toggle(tool, sender, canvasevent, data)
@@ -3578,13 +3577,18 @@ def tools(self):
35783577
return self._tools
35793578

35803579
def get_tool(self, name):
3581-
"""Return the tool object
3580+
"""Return the tool object, also accepts the actual tool for convenience
35823581
35833582
Parameters
35843583
-----------
3585-
name : String
3586-
Name of the tool
3584+
name : String, ToolBase
3585+
Name of the tool, or the tool itself
35873586
"""
3587+
if isinstance(name, tools.ToolBase):
3588+
return name
3589+
if name not in self._tools:
3590+
warnings.warn("%s is not a tool controlled by Navigation" % name)
3591+
return None
35883592
return self._tools[name]
35893593

35903594

0 commit comments

Comments
 (0)