Repository: spyder-ide/spyder

Issue:
Plots pane issues and details
- [ ] Thumbnails scrollbar by default appears too big and plot size too small:
<details>

#### Master
![image](https://user-images.githubusercontent.com/16781833/91754350-e189a880-eb8e-11ea-8662-f017ee99d876.png)

#### 4.x
![image](https://user-images.githubusercontent.com/16781833/91754414-f9612c80-eb8e-11ea-8c40-0a542b22ee41.png)

</details>

- [ ] Shortcuts Toolbar:
    - [ ] Save all plots (Cmd+alt+S) not showing on tooltip and not working
    - [ ] Remove plot (Cmd+W) not showing on tooltip and not working
    - [ ] Remove all plots (Cmd+Shift+W) not showing on tooltip and not working
    - [ ] Previous plot/Next plot (Arrows) WORKING but not showing on tooltip
    - [ ] Zoom in/Zoom out (cmd+/-) not showing on tooltip and not working

- [ ] Tooltips names:
    - [ ] Save plot as (master) v.s. Save plot as… (4x)
    - [ ] Save all plots (master) v.s. Save all plots…(4x)
    - [ ] Copy plot to clipboard as image (master) v.s Copy image (4x)

- [ ] Context menu:
    - [ ] `Remove plot` in the context menu is not showing the shortcut (Cmd + W)

Example code used for the plot:

<details>

```python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 20 00:38:09 2020
​
@author: juanis
"""
import numpy as np
import matplotlib.pyplot as plt
​
# example data
x = np.arange(0.1, 4, 0.1)
y1 = np.exp(-1.0 * x)
y2 = np.exp(-0.5 * x)
​
# example variable error bar values
y1err = 0.1 + 0.1 * np.sqrt(x)
y2err = 0.1 + 0.1 * np.sqrt(x/2)
​
​
# Now switch to a more OO interface to exercise more features.
fig, (ax_l, ax_c) = plt.subplots(nrows=1, ncols=2,
                                       sharex=True, figsize=(12, 6))
​
ax_l.set_title('all errorbars')
ax_l.errorbar(x, y1, yerr=y1err)
ax_l.errorbar(x, y2, yerr=y2err)
​
ax_c.set_title('only every 6th errorbar')
ax_c.errorbar(x, y1, yerr=y1err, errorevery=6)
ax_c.errorbar(x, y2, yerr=y2err, errorevery=6)
​
​
fig.suptitle('Errorbar subsampling for better appearance')
plt.show()
```

</details>


Discussion:
@goanpeca could you look into this please? Thanks!
Thanks for the feedback @dalthviz, will work on the fixes.

Resolving patch:
diff --git a/spyder/plugins/plots/widgets/figurebrowser.py b/spyder/plugins/plots/widgets/figurebrowser.py
--- a/spyder/plugins/plots/widgets/figurebrowser.py
+++ b/spyder/plugins/plots/widgets/figurebrowser.py
@@ -202,6 +202,18 @@ def setup(self, options):
             elif option == 'save_dir':
                 self.thumbnails_sb.save_dir = value
 
+    def update_splitter_widths(self, base_width):
+        """
+        Update the widths to provide the scrollbar with a fixed minimumwidth.
+
+        Parameters
+        ----------
+        base_width: int
+            The available splitter width.
+        """
+        min_sb_width = self.thumbnails_sb._min_scrollbar_width
+        self.splitter.setSizes([base_width - min_sb_width, min_sb_width])
+
     def show_fig_outline_in_viewer(self, state):
         """Draw a frame around the figure viewer if state is True."""
         if state is True:
diff --git a/spyder/plugins/plots/widgets/main_widget.py b/spyder/plugins/plots/widgets/main_widget.py
--- a/spyder/plugins/plots/widgets/main_widget.py
+++ b/spyder/plugins/plots/widgets/main_widget.py
@@ -35,14 +35,14 @@
 class PlotsWidgetActions:
     # Triggers
     Save = 'save'
-    SaveAll = 'save_all'
+    SaveAll = 'save all'
     Copy = 'copy'
     Close = 'close'
-    CloseAll = 'close_all'
-    MoveToPreviousFigure = 'previous_figure'
-    MoveToNextFigure = 'next_figure'
-    ZoomIn = 'zoom_in'
-    ZoomOut = 'zoom_out'
+    CloseAll = 'close all'
+    MoveToPreviousFigure = 'previous figure'
+    MoveToNextFigure = 'next figure'
+    ZoomIn = 'zoom in'
+    ZoomOut = 'zoom out'
 
     # Toggles
     ToggleMuteInlinePlotting = 'toggle_mute_inline_plotting_action'
@@ -225,6 +225,7 @@ def setup(self, options):
         save_action = self.create_action(
             name=PlotsWidgetActions.Save,
             text=_("Save plot as..."),
+            tip=_("Save plot as..."),
             icon=self.create_icon('filesave'),
             triggered=self.save_plot,
             register_shortcut=True,
@@ -232,13 +233,15 @@ def setup(self, options):
         save_all_action = self.create_action(
             name=PlotsWidgetActions.SaveAll,
             text=_("Save all plots..."),
+            tip=_("Save all plots..."),
             icon=self.create_icon('save_all'),
             triggered=self.save_all_plots,
             register_shortcut=True,
         )
         copy_action = self.create_action(
             name=PlotsWidgetActions.Copy,
-            text=_("Copy Image"),
+            text=_("Copy image"),
+            tip=_("Copy plot to clipboard as image"),
             icon=self.create_icon('editcopy'),
             triggered=self.copy_image,
             register_shortcut=True,
@@ -248,6 +251,7 @@ def setup(self, options):
             text=_("Remove plot"),
             icon=self.create_icon('editclear'),
             triggered=self.remove_plot,
+            register_shortcut=True,
         )
         remove_all_action = self.create_action(
             name=PlotsWidgetActions.CloseAll,
@@ -430,6 +434,7 @@ def add_shellwidget(self, shellwidget):
         if shellwidget_id not in self._shellwidgets:
             fig_browser = FigureBrowser(parent=self._stack,
                                         background_color=MAIN_BG_COLOR)
+            fig_browser.update_splitter_widths(self.width())
             fig_browser.set_shellwidget(shellwidget)
             fig_browser.sig_redirect_stdio_requested.connect(
                 self.sig_redirect_stdio_requested)


Test patch: