@@ -3254,7 +3254,6 @@ def __init__(self, manager):
32543254
32553255 self ._tools = {}
32563256 self ._keys = {}
3257- self ._instances = {}
32583257 self ._toggled = None
32593258
32603259 # to process keypress event
@@ -3273,15 +3272,6 @@ def active_toggle(self):
32733272
32743273 return self ._toggled
32753274
3276- @property
3277- def instances (self ):
3278- """Active tools instances
3279-
3280- **dictionary** : Contains the active instances that are registered
3281- """
3282-
3283- return self ._instances
3284-
32853275 def get_tool_keymap (self , name ):
32863276 """Get the keymap associated with a tool
32873277
@@ -3323,28 +3313,19 @@ def set_tool_keymap(self, name, *keys):
33233313 self ._keys [k ] = name
33243314
33253315 def unregister (self , name ):
3326- """Unregister the tool from the active instances
3316+ """Unregister the tool from Navigation
33273317
33283318 Parameters
33293319 ----------
33303320 name : string
33313321 Name of the tool to unregister
3332-
3333- Notes
3334- -----
3335- This method is used by `PersistentTools` to remove the reference kept
3336- by `Navigation`.
3337-
3338- It is usually called by the `unregister` method
3339-
3340- If called, next time the `Tool` is used it will be reinstantiated
3341- instead of using the existing instance.
33423322 """
33433323
33443324 if self ._toggled == name :
33453325 self ._handle_toggle (name , from_toolbar = False )
3346- if name in self ._instances :
3347- del self ._instances [name ]
3326+ if name in self ._tools :
3327+ self ._tools [name ].destroy ()
3328+ del self ._tools [name ]
33483329
33493330 def remove_tool (self , name ):
33503331 """Remove tool from the `Navigation`
@@ -3356,7 +3337,7 @@ def remove_tool(self, name):
33563337 """
33573338
33583339 self .unregister (name )
3359- del self . _tools [ name ]
3340+
33603341 keys = [k for k , v in six .iteritems (self ._keys ) if v == name ]
33613342 for k in keys :
33623343 del self ._keys [k ]
@@ -3403,7 +3384,7 @@ def add_tool(self, name, tool, position=None):
34033384 'not added' )
34043385 return
34053386
3406- self ._tools [name ] = tool_cls
3387+ self ._tools [name ] = tool_cls ( self . canvas . figure , name )
34073388 if tool_cls .keymap is not None :
34083389 self .set_tool_keymap (name , tool_cls .keymap )
34093390
@@ -3436,27 +3417,23 @@ def _get_cls_to_instantiate(self, callback_class):
34363417
34373418 return callback_class
34383419
3439- def trigger_tool (self , name ):
3420+ def trigger_tool (self , name , event = None ):
34403421 """Trigger on a tool
34413422
34423423 Method to programatically "click" on Tools
34433424 """
34443425
3445- self ._trigger_tool (name , None , False )
3426+ self ._trigger_tool (name , event , False )
34463427
34473428 def _trigger_tool (self , name , event , from_toolbar ):
34483429 if name not in self ._tools :
34493430 raise AttributeError ('%s not in Tools' % name )
34503431
34513432 tool = self ._tools [name ]
3452- if issubclass (tool , tools .ToolToggleBase ):
3433+ if isinstance (tool , tools .ToolToggleBase ):
34533434 self ._handle_toggle (name , event = event , from_toolbar = from_toolbar )
3454- elif issubclass (tool , tools .ToolPersistentBase ):
3455- instance = self ._get_instance (name )
3456- instance .trigger (event )
34573435 else :
3458- # Non persistent tools, are instantiated and forgotten
3459- tool (self .canvas .figure , event )
3436+ tool .trigger (event )
34603437
34613438 def _key_press (self , event ):
34623439 if event .key is None or self .keypresslock .locked ():
@@ -3467,14 +3444,6 @@ def _key_press(self, event):
34673444 return
34683445 self ._trigger_tool (name , event , False )
34693446
3470- def _get_instance (self , name ):
3471- if name not in self ._instances :
3472- instance = self ._tools [name ](self .canvas .figure , name )
3473- # register instance
3474- self ._instances [name ] = instance
3475-
3476- return self ._instances [name ]
3477-
34783447 def _toolbar_callback (self , name ):
34793448 """Callback for the `Toolbar`
34803449
@@ -3495,7 +3464,7 @@ def _handle_toggle(self, name, event=None, from_toolbar=False):
34953464 if not from_toolbar and self .toolbar :
34963465 self .toolbar ._toggle (name , False )
34973466
3498- instance = self ._get_instance ( name )
3467+ tool = self ._tools [ name ]
34993468 if self ._toggled is None :
35003469 # first trigger of tool
35013470 self ._toggled = name
@@ -3507,10 +3476,10 @@ def _handle_toggle(self, name, event=None, from_toolbar=False):
35073476 if self .toolbar :
35083477 # untoggle the previous toggled tool
35093478 self .toolbar ._toggle (self ._toggled , False )
3510- self ._get_instance ( self ._toggled ) .trigger (event )
3479+ self ._tools [ self ._toggled ] .trigger (event )
35113480 self ._toggled = name
35123481
3513- instance .trigger (event )
3482+ tool .trigger (event )
35143483
35153484 for a in self .canvas .figure .get_axes ():
35163485 a .set_navigate_mode (self ._toggled )
@@ -3534,7 +3503,7 @@ def _mouse_move(self, event):
35343503 self ._last_cursor = self ._default_cursor
35353504 else :
35363505 if self ._toggled :
3537- cursor = self ._instances [self ._toggled ].cursor
3506+ cursor = self ._tools [self ._toggled ].cursor
35383507 if cursor and self ._last_cursor != cursor :
35393508 self .set_cursor (cursor )
35403509 self ._last_cursor = cursor
0 commit comments