@@ -358,101 +358,66 @@ def remove_rubberband(self):
358
358
pass
359
359
360
360
361
- class ToolQuit (ToolBase ):
361
+ class _ToolForwardingToClassicToolbar (ToolBase ):
362
+ _rc_entry = '' # Must be set by subclass.
363
+ default_keymap = property (lambda self : mpl .rcParams [self ._rc_entry ])
364
+
365
+ def trigger (self , sender , event , data = None ):
366
+ sentinel = str (uuid .uuid4 ())
367
+ # Trigger class toolbar implementation by temporarily setting the keymap to a
368
+ # unique key and sending an appropriate event.
369
+ with cbook ._setattr_cm (event , key = sentinel ), \
370
+ mpl .rc_context ({self ._rc_entry : sentinel }):
371
+ mpl .backend_bases .key_press_handler (event , self .figure .canvas )
372
+
373
+
374
+ class ToolQuit (_ToolForwardingToClassicToolbar ):
362
375
"""Tool to call the figure manager destroy method."""
363
376
364
377
description = 'Quit the figure'
365
- default_keymap = property (lambda self : mpl .rcParams ['keymap.quit' ])
366
-
367
- def trigger (self , sender , event , data = None ):
368
- Gcf .destroy_fig (self .figure )
378
+ _rc_entry = 'keymap.quit'
369
379
370
380
371
- class ToolQuitAll (ToolBase ):
381
+ class ToolQuitAll (_ToolForwardingToClassicToolbar ):
372
382
"""Tool to call the figure manager destroy method."""
373
383
374
384
description = 'Quit all figures'
375
- default_keymap = property (lambda self : mpl .rcParams ['keymap.quit_all' ])
376
-
377
- def trigger (self , sender , event , data = None ):
378
- Gcf .destroy_all ()
385
+ _rc_entry = 'keymap.quit_all'
379
386
380
387
381
- class ToolGrid (ToolBase ):
388
+ class ToolGrid (_ToolForwardingToClassicToolbar ):
382
389
"""Tool to toggle the major grids of the figure."""
383
390
384
391
description = 'Toggle major grids'
385
- default_keymap = property (lambda self : mpl .rcParams ['keymap.grid' ])
386
-
387
- def trigger (self , sender , event , data = None ):
388
- sentinel = str (uuid .uuid4 ())
389
- # Trigger grid switching by temporarily setting :rc:`keymap.grid`
390
- # to a unique key and sending an appropriate event.
391
- with cbook ._setattr_cm (event , key = sentinel ), \
392
- mpl .rc_context ({'keymap.grid' : sentinel }):
393
- mpl .backend_bases .key_press_handler (event , self .figure .canvas )
392
+ _rc_entry = 'keymap.grid'
394
393
395
394
396
- class ToolMinorGrid (ToolBase ):
395
+ class ToolMinorGrid (_ToolForwardingToClassicToolbar ):
397
396
"""Tool to toggle the major and minor grids of the figure."""
398
397
399
398
description = 'Toggle major and minor grids'
400
- default_keymap = property (lambda self : mpl .rcParams ['keymap.grid_minor' ])
401
-
402
- def trigger (self , sender , event , data = None ):
403
- sentinel = str (uuid .uuid4 ())
404
- # Trigger grid switching by temporarily setting :rc:`keymap.grid_minor`
405
- # to a unique key and sending an appropriate event.
406
- with cbook ._setattr_cm (event , key = sentinel ), \
407
- mpl .rc_context ({'keymap.grid_minor' : sentinel }):
408
- mpl .backend_bases .key_press_handler (event , self .figure .canvas )
399
+ _rc_entry = 'keymap.grid_minor'
409
400
410
401
411
- class ToolFullScreen (ToolBase ):
402
+ class ToolFullScreen (_ToolForwardingToClassicToolbar ):
412
403
"""Tool to toggle full screen."""
413
404
414
405
description = 'Toggle fullscreen mode'
415
- default_keymap = property ( lambda self : mpl . rcParams [ 'keymap.fullscreen' ])
406
+ _rc_entry = 'keymap.fullscreen'
416
407
417
- def trigger (self , sender , event , data = None ):
418
- self .figure .canvas .manager .full_screen_toggle ()
419
-
420
-
421
- class AxisScaleBase (ToolToggleBase ):
422
- """Base Tool to toggle between linear and logarithmic."""
423
408
424
- def trigger (self , sender , event , data = None ):
425
- if event .inaxes is None :
426
- return
427
- super ().trigger (sender , event , data )
428
-
429
- def enable (self , event = None ):
430
- self .set_scale (event .inaxes , 'log' )
431
- self .figure .canvas .draw_idle ()
409
+ class ToolXScale (_ToolForwardingToClassicToolbar ):
410
+ """Tool to toggle between linear and logarithmic scales on the X axis."""
432
411
433
- def disable (self , event = None ):
434
- self .set_scale (event .inaxes , 'linear' )
435
- self .figure .canvas .draw_idle ()
412
+ description = 'Toggle scale X axis'
413
+ _rc_entry = 'keymap.xscale'
436
414
437
415
438
- class ToolYScale (AxisScaleBase ):
416
+ class ToolYScale (_ToolForwardingToClassicToolbar ):
439
417
"""Tool to toggle between linear and logarithmic scales on the Y axis."""
440
418
441
419
description = 'Toggle scale Y axis'
442
- default_keymap = property (lambda self : mpl .rcParams ['keymap.yscale' ])
443
-
444
- def set_scale (self , ax , scale ):
445
- ax .set_yscale (scale )
446
-
447
-
448
- class ToolXScale (AxisScaleBase ):
449
- """Tool to toggle between linear and logarithmic scales on the X axis."""
450
-
451
- description = 'Toggle scale X axis'
452
- default_keymap = property (lambda self : mpl .rcParams ['keymap.xscale' ])
453
-
454
- def set_scale (self , ax , scale ):
455
- ax .set_xscale (scale )
420
+ _rc_entry = 'keymap.yscale'
456
421
457
422
458
423
class ToolViewsPositions (ToolBase ):
0 commit comments