@@ -3254,7 +3254,6 @@ def __init__(self, manager):
3254
3254
3255
3255
self ._tools = {}
3256
3256
self ._keys = {}
3257
- self ._instances = {}
3258
3257
self ._toggled = None
3259
3258
3260
3259
# to process keypress event
@@ -3273,15 +3272,6 @@ def active_toggle(self):
3273
3272
3274
3273
return self ._toggled
3275
3274
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
-
3285
3275
def get_tool_keymap (self , name ):
3286
3276
"""Get the keymap associated with a tool
3287
3277
@@ -3323,28 +3313,19 @@ def set_tool_keymap(self, name, *keys):
3323
3313
self ._keys [k ] = name
3324
3314
3325
3315
def unregister (self , name ):
3326
- """Unregister the tool from the active instances
3316
+ """Unregister the tool from Navigation
3327
3317
3328
3318
Parameters
3329
3319
----------
3330
3320
name : string
3331
3321
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.
3342
3322
"""
3343
3323
3344
3324
if self ._toggled == name :
3345
3325
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 ]
3348
3329
3349
3330
def remove_tool (self , name ):
3350
3331
"""Remove tool from the `Navigation`
@@ -3356,7 +3337,7 @@ def remove_tool(self, name):
3356
3337
"""
3357
3338
3358
3339
self .unregister (name )
3359
- del self . _tools [ name ]
3340
+
3360
3341
keys = [k for k , v in six .iteritems (self ._keys ) if v == name ]
3361
3342
for k in keys :
3362
3343
del self ._keys [k ]
@@ -3403,7 +3384,7 @@ def add_tool(self, name, tool, position=None):
3403
3384
'not added' )
3404
3385
return
3405
3386
3406
- self ._tools [name ] = tool_cls
3387
+ self ._tools [name ] = tool_cls ( self . canvas . figure , name )
3407
3388
if tool_cls .keymap is not None :
3408
3389
self .set_tool_keymap (name , tool_cls .keymap )
3409
3390
@@ -3436,27 +3417,23 @@ def _get_cls_to_instantiate(self, callback_class):
3436
3417
3437
3418
return callback_class
3438
3419
3439
- def trigger_tool (self , name ):
3420
+ def trigger_tool (self , name , event = None ):
3440
3421
"""Trigger on a tool
3441
3422
3442
3423
Method to programatically "click" on Tools
3443
3424
"""
3444
3425
3445
- self ._trigger_tool (name , None , False )
3426
+ self ._trigger_tool (name , event , False )
3446
3427
3447
3428
def _trigger_tool (self , name , event , from_toolbar ):
3448
3429
if name not in self ._tools :
3449
3430
raise AttributeError ('%s not in Tools' % name )
3450
3431
3451
3432
tool = self ._tools [name ]
3452
- if issubclass (tool , tools .ToolToggleBase ):
3433
+ if isinstance (tool , tools .ToolToggleBase ):
3453
3434
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 )
3457
3435
else :
3458
- # Non persistent tools, are instantiated and forgotten
3459
- tool (self .canvas .figure , event )
3436
+ tool .trigger (event )
3460
3437
3461
3438
def _key_press (self , event ):
3462
3439
if event .key is None or self .keypresslock .locked ():
@@ -3467,14 +3444,6 @@ def _key_press(self, event):
3467
3444
return
3468
3445
self ._trigger_tool (name , event , False )
3469
3446
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
-
3478
3447
def _toolbar_callback (self , name ):
3479
3448
"""Callback for the `Toolbar`
3480
3449
@@ -3495,7 +3464,7 @@ def _handle_toggle(self, name, event=None, from_toolbar=False):
3495
3464
if not from_toolbar and self .toolbar :
3496
3465
self .toolbar ._toggle (name , False )
3497
3466
3498
- instance = self ._get_instance ( name )
3467
+ tool = self ._tools [ name ]
3499
3468
if self ._toggled is None :
3500
3469
# first trigger of tool
3501
3470
self ._toggled = name
@@ -3507,10 +3476,10 @@ def _handle_toggle(self, name, event=None, from_toolbar=False):
3507
3476
if self .toolbar :
3508
3477
# untoggle the previous toggled tool
3509
3478
self .toolbar ._toggle (self ._toggled , False )
3510
- self ._get_instance ( self ._toggled ) .trigger (event )
3479
+ self ._tools [ self ._toggled ] .trigger (event )
3511
3480
self ._toggled = name
3512
3481
3513
- instance .trigger (event )
3482
+ tool .trigger (event )
3514
3483
3515
3484
for a in self .canvas .figure .get_axes ():
3516
3485
a .set_navigate_mode (self ._toggled )
@@ -3534,7 +3503,7 @@ def _mouse_move(self, event):
3534
3503
self ._last_cursor = self ._default_cursor
3535
3504
else :
3536
3505
if self ._toggled :
3537
- cursor = self ._instances [self ._toggled ].cursor
3506
+ cursor = self ._tools [self ._toggled ].cursor
3538
3507
if cursor and self ._last_cursor != cursor :
3539
3508
self .set_cursor (cursor )
3540
3509
self ._last_cursor = cursor
0 commit comments