From 82877b76e18d958a6b5bc1115152afe85a714453 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 29 May 2020 19:43:35 -0400 Subject: [PATCH] Use symbolic icons for buttons in GTK toolbar. Unfortunately, the only way to trigger this is to rename the files, so add some symlinks to the existing SVG. Switching from PNG to SVG should be scalable as well. --- lib/matplotlib/backends/backend_gtk3.py | 17 ++++++++++------- .../mpl-data/images/back-symbolic.svg | 1 + .../mpl-data/images/filesave-symbolic.svg | 1 + .../mpl-data/images/forward-symbolic.svg | 1 + .../mpl-data/images/help-symbolic.svg | 1 + .../mpl-data/images/home-symbolic.svg | 1 + .../mpl-data/images/move-symbolic.svg | 1 + .../mpl-data/images/subplots-symbolic.svg | 1 + .../mpl-data/images/zoom_to_rect-symbolic.svg | 1 + 9 files changed, 18 insertions(+), 7 deletions(-) create mode 120000 lib/matplotlib/mpl-data/images/back-symbolic.svg create mode 120000 lib/matplotlib/mpl-data/images/filesave-symbolic.svg create mode 120000 lib/matplotlib/mpl-data/images/forward-symbolic.svg create mode 120000 lib/matplotlib/mpl-data/images/help-symbolic.svg create mode 120000 lib/matplotlib/mpl-data/images/home-symbolic.svg create mode 120000 lib/matplotlib/mpl-data/images/move-symbolic.svg create mode 120000 lib/matplotlib/mpl-data/images/subplots-symbolic.svg create mode 120000 lib/matplotlib/mpl-data/images/zoom_to_rect-symbolic.svg diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py index 829331930122..871cea620fad 100644 --- a/lib/matplotlib/backends/backend_gtk3.py +++ b/lib/matplotlib/backends/backend_gtk3.py @@ -27,7 +27,7 @@ # auto-backend selection logic correctly skips. raise ImportError from e -from gi.repository import GLib, GObject, Gtk, Gdk +from gi.repository import Gio, GLib, GObject, Gtk, Gdk _log = logging.getLogger(__name__) @@ -464,9 +464,11 @@ def __init__(self, canvas, window): if text is None: self.insert(Gtk.SeparatorToolItem(), -1) continue - image = Gtk.Image() - image.set_from_file( - str(cbook._get_data_path('images', image_file + '.png'))) + image = Gtk.Image.new_from_gicon( + Gio.Icon.new_for_string( + str(cbook._get_data_path('images', + f'{image_file}-symbolic.svg'))), + Gtk.IconSize.LARGE_TOOLBAR) self._gtk_ids[text] = tbutton = ( Gtk.ToggleToolButton() if callback in ['zoom', 'pan'] else Gtk.ToolButton()) @@ -623,7 +625,7 @@ def set_history_buttons(self): class ToolbarGTK3(ToolContainerBase, Gtk.Box): - _icon_extension = '.png' + _icon_extension = '-symbolic.svg' def __init__(self, toolmanager): ToolContainerBase.__init__(self, toolmanager) @@ -644,8 +646,9 @@ def add_toolitem(self, name, group, position, image_file, description, tbutton.set_label(name) if image_file is not None: - image = Gtk.Image() - image.set_from_file(image_file) + image = Gtk.Image.new_from_gicon( + Gio.Icon.new_for_string(image_file), + Gtk.IconSize.LARGE_TOOLBAR) tbutton.set_icon_widget(image) if position is None: diff --git a/lib/matplotlib/mpl-data/images/back-symbolic.svg b/lib/matplotlib/mpl-data/images/back-symbolic.svg new file mode 120000 index 000000000000..22b78b6a8d63 --- /dev/null +++ b/lib/matplotlib/mpl-data/images/back-symbolic.svg @@ -0,0 +1 @@ +back.svg \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/filesave-symbolic.svg b/lib/matplotlib/mpl-data/images/filesave-symbolic.svg new file mode 120000 index 000000000000..2bad4deb6655 --- /dev/null +++ b/lib/matplotlib/mpl-data/images/filesave-symbolic.svg @@ -0,0 +1 @@ +filesave.svg \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/forward-symbolic.svg b/lib/matplotlib/mpl-data/images/forward-symbolic.svg new file mode 120000 index 000000000000..16bea25c1a22 --- /dev/null +++ b/lib/matplotlib/mpl-data/images/forward-symbolic.svg @@ -0,0 +1 @@ +forward.svg \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/help-symbolic.svg b/lib/matplotlib/mpl-data/images/help-symbolic.svg new file mode 120000 index 000000000000..74f27a8db5a5 --- /dev/null +++ b/lib/matplotlib/mpl-data/images/help-symbolic.svg @@ -0,0 +1 @@ +help.svg \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/home-symbolic.svg b/lib/matplotlib/mpl-data/images/home-symbolic.svg new file mode 120000 index 000000000000..bab8cc61783f --- /dev/null +++ b/lib/matplotlib/mpl-data/images/home-symbolic.svg @@ -0,0 +1 @@ +home.svg \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/move-symbolic.svg b/lib/matplotlib/mpl-data/images/move-symbolic.svg new file mode 120000 index 000000000000..37362fe44247 --- /dev/null +++ b/lib/matplotlib/mpl-data/images/move-symbolic.svg @@ -0,0 +1 @@ +move.svg \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/subplots-symbolic.svg b/lib/matplotlib/mpl-data/images/subplots-symbolic.svg new file mode 120000 index 000000000000..d5b44c022b3b --- /dev/null +++ b/lib/matplotlib/mpl-data/images/subplots-symbolic.svg @@ -0,0 +1 @@ +subplots.svg \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/zoom_to_rect-symbolic.svg b/lib/matplotlib/mpl-data/images/zoom_to_rect-symbolic.svg new file mode 120000 index 000000000000..817c9f054330 --- /dev/null +++ b/lib/matplotlib/mpl-data/images/zoom_to_rect-symbolic.svg @@ -0,0 +1 @@ +zoom_to_rect.svg \ No newline at end of file