From eff04530de5bde8ecc31bfbf477ce2ed50578af2 Mon Sep 17 00:00:00 2001 From: Thomas Hisch Date: Fri, 14 Aug 2015 11:44:59 +0200 Subject: [PATCH 1/2] Add a quit_all key to the default keymap --- doc/users/navigation_toolbar.rst | 3 ++- lib/matplotlib/backend_bases.py | 4 ++++ lib/matplotlib/backend_tools.py | 11 +++++++++++ lib/matplotlib/rcsetup.py | 3 ++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/doc/users/navigation_toolbar.rst b/doc/users/navigation_toolbar.rst index 1709d0a10f5c..8140874775db 100644 --- a/doc/users/navigation_toolbar.rst +++ b/doc/users/navigation_toolbar.rst @@ -95,7 +95,8 @@ Zoom-to-rect **o** Save **ctrl** + **s** Toggle fullscreen **ctrl** + **f** Close plot **ctrl** + **w** -Constrain pan/zoom to x axis hold **x** when panning/zooming with mouse +Close all plots **shift** + **w** +Constrain pan/zoom to x axis hold **x** when panning/zooming with mouse Constrain pan/zoom to y axis hold **y** when panning/zooming with mouse Preserve aspect ratio hold **CONTROL** when panning/zooming with mouse Toggle grid **g** when mouse is over an axes diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index f1560bf6dcf0..c9fa810c9c25 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2484,6 +2484,7 @@ def key_press_handler(event, canvas, toolbar=None): zoom_keys = rcParams['keymap.zoom'] save_keys = rcParams['keymap.save'] quit_keys = rcParams['keymap.quit'] + quit_all_keys = rcParams['keymap.quit_all'] grid_keys = rcParams['keymap.grid'] toggle_yscale_keys = rcParams['keymap.yscale'] toggle_xscale_keys = rcParams['keymap.xscale'] @@ -2500,6 +2501,9 @@ def key_press_handler(event, canvas, toolbar=None): if event.key in quit_keys: Gcf.destroy_fig(canvas.figure) + if event.key in quit_all_keys: + Gcf.destroy_all() + if toolbar is not None: # home or reset mnemonic (default key 'h', 'home' and 'r') if event.key in home_keys: diff --git a/lib/matplotlib/backend_tools.py b/lib/matplotlib/backend_tools.py index f54ba65be4c9..7c2bbbb1e5aa 100644 --- a/lib/matplotlib/backend_tools.py +++ b/lib/matplotlib/backend_tools.py @@ -325,6 +325,16 @@ def trigger(self, sender, event, data=None): Gcf.destroy_fig(self.figure) +class ToolQuitAll(ToolBase): + """Tool to call the figure manager destroy method""" + + description = 'Quit all figures' + default_keymap = rcParams['keymap.quit_all'] + + def trigger(self, sender, event, data=None): + Gcf.destroy_all() + + class ToolEnableAllNavigation(ToolBase): """Tool to enable all axes for toolmanager interaction""" @@ -860,6 +870,7 @@ def _mouse_move(self, event): 'grid': ToolGrid, 'fullscreen': ToolFullScreen, 'quit': ToolQuit, + 'quit_all': ToolQuitAll, 'allnav': ToolEnableAllNavigation, 'nav': ToolEnableNavigation, 'xscale': ToolXScale, diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 97d0015a4ec6..020ef4bd39a6 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -1158,7 +1158,8 @@ def validate_cycler(s): 'keymap.pan': [['p'], validate_stringlist], 'keymap.zoom': [['o'], validate_stringlist], 'keymap.save': [['s', 'ctrl+s'], validate_stringlist], - 'keymap.quit': [['ctrl+w', 'cmd+w'], validate_stringlist], + 'keymap.quit': [['ctrl+w', 'cmd+w', 'q'], validate_stringlist], + 'keymap.quit_all': [['W', 'cmd+W', 'Q'], validate_stringlist], 'keymap.grid': [['g'], validate_stringlist], 'keymap.yscale': [['l'], validate_stringlist], 'keymap.xscale': [['k', 'L'], validate_stringlist], From f25ee916b1b57c529405abc95e31a70a08fe302e Mon Sep 17 00:00:00 2001 From: Thomas Hisch Date: Thu, 3 Dec 2015 00:02:32 +0100 Subject: [PATCH 2/2] remove 'quit_all' support from toolbar2 --- lib/matplotlib/backend_bases.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index c9fa810c9c25..f1560bf6dcf0 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2484,7 +2484,6 @@ def key_press_handler(event, canvas, toolbar=None): zoom_keys = rcParams['keymap.zoom'] save_keys = rcParams['keymap.save'] quit_keys = rcParams['keymap.quit'] - quit_all_keys = rcParams['keymap.quit_all'] grid_keys = rcParams['keymap.grid'] toggle_yscale_keys = rcParams['keymap.yscale'] toggle_xscale_keys = rcParams['keymap.xscale'] @@ -2501,9 +2500,6 @@ def key_press_handler(event, canvas, toolbar=None): if event.key in quit_keys: Gcf.destroy_fig(canvas.figure) - if event.key in quit_all_keys: - Gcf.destroy_all() - if toolbar is not None: # home or reset mnemonic (default key 'h', 'home' and 'r') if event.key in home_keys: