@@ -3383,7 +3383,7 @@ def remove_tool(self, name):
3383
3383
Name of the Tool
3384
3384
"""
3385
3385
3386
- tool = self ._tools [ name ]
3386
+ tool = self .get_tool ( name )
3387
3387
tool .destroy ()
3388
3388
3389
3389
# If is a toggle tool and toggled, untoggle
@@ -3534,8 +3534,8 @@ def tool_trigger_event(self, name, sender=None, canvasevent=None,
3534
3534
data : Object
3535
3535
Extra data to pass to the tool when triggering
3536
3536
"""
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 :
3539
3539
return
3540
3540
3541
3541
if sender is None :
@@ -3544,16 +3544,15 @@ def tool_trigger_event(self, name, sender=None, canvasevent=None,
3544
3544
self ._trigger_tool (name , sender , canvasevent , data )
3545
3545
3546
3546
s = 'tool_trigger_%s' % name
3547
- event = ToolTriggerEvent (s , sender , self ._tools [name ], canvasevent ,
3548
- data )
3547
+ event = ToolTriggerEvent (s , sender , tool , canvasevent , data )
3549
3548
self ._callbacks .process (s , event )
3550
3549
3551
3550
def _trigger_tool (self , name , sender = None , canvasevent = None , data = None ):
3552
3551
"""Trigger on a tool
3553
3552
3554
3553
Method to actually trigger the tool
3555
3554
"""
3556
- tool = self ._tools [ name ]
3555
+ tool = self .get_tool ( name )
3557
3556
3558
3557
if isinstance (tool , tools .ToolToggleBase ):
3559
3558
self ._handle_toggle (tool , sender , canvasevent , data )
@@ -3578,13 +3577,18 @@ def tools(self):
3578
3577
return self ._tools
3579
3578
3580
3579
def get_tool (self , name ):
3581
- """Return the tool object
3580
+ """Return the tool object, also accepts the actual tool for convenience
3582
3581
3583
3582
Parameters
3584
3583
-----------
3585
- name : String
3586
- Name of the tool
3584
+ name : String, ToolBase
3585
+ Name of the tool, or the tool itself
3587
3586
"""
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
3588
3592
return self ._tools [name ]
3589
3593
3590
3594
0 commit comments