Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions lib/matplotlib/backend_bases.py
Original file line number Diff line number Diff line change
Expand Up @@ -3365,7 +3365,7 @@ def remove_tool(self, name):
Name of the Tool
"""

tool = self._tools[name]
tool = self.get_tool(name)
tool.destroy()

# If is a toggle tool and toggled, untoggle
Expand Down Expand Up @@ -3516,8 +3516,8 @@ def tool_trigger_event(self, name, sender=None, canvasevent=None,
data : Object
Extra data to pass to the tool when triggering
"""
if name not in self._tools:
warnings.warn("%s is not a tool controlled by Navigation" % name)
tool = self.get_tool(name)
if tool is None:
return

if sender is None:
Expand All @@ -3526,16 +3526,15 @@ def tool_trigger_event(self, name, sender=None, canvasevent=None,
self._trigger_tool(name, sender, canvasevent, data)

s = 'tool_trigger_%s' % name
event = ToolTriggerEvent(s, sender, self._tools[name], canvasevent,
data)
event = ToolTriggerEvent(s, sender, tool, canvasevent, data)
self._callbacks.process(s, event)

def _trigger_tool(self, name, sender=None, canvasevent=None, data=None):
"""Trigger on a tool

Method to actually trigger the tool
"""
tool = self._tools[name]
tool = self.get_tool(name)

if isinstance(tool, tools.ToolToggleBase):
self._handle_toggle(tool, sender, canvasevent, data)
Expand All @@ -3560,13 +3559,18 @@ def tools(self):
return self._tools

def get_tool(self, name):
"""Return the tool object
"""Return the tool object, also accepts the actual tool for convenience

Parameters
-----------
name : String
Name of the tool
name : String, ToolBase
Name of the tool, or the tool itself
"""
if isinstance(name, tools.ToolBase):
return name
if name not in self._tools:
warnings.warn("%s is not a tool controlled by Navigation" % name)
return None
return self._tools[name]


Expand Down