From 55f2b3558954c24384abc5b2923ad27073064ea2 Mon Sep 17 00:00:00 2001 From: Carifio24 Date: Thu, 15 Aug 2024 10:46:12 -0400 Subject: [PATCH 1/2] Allow using non-SVG images in toolbar. --- glue_jupyter/common/toolbar_vuetify.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/glue_jupyter/common/toolbar_vuetify.py b/glue_jupyter/common/toolbar_vuetify.py index 9a08cffd..10423081 100644 --- a/glue_jupyter/common/toolbar_vuetify.py +++ b/glue_jupyter/common/toolbar_vuetify.py @@ -70,14 +70,17 @@ def _on_change_active_tool(self, change): def add_tool(self, tool): self.tools[tool.tool_id] = tool # TODO: we should ideally just incorporate this check into icon_path directly. + ext = os.path.splitext(tool.icon)[1][1:] or "svg" if os.path.exists(tool.icon): path = tool.icon else: - path = icon_path(tool.icon, icon_format='svg') + path = icon_path(tool.icon, icon_format=ext) + + format = "svg+xml" if ext == "svg" else ext self.tools_data = { **self.tools_data, tool.tool_id: { 'tooltip': tool.tool_tip, - 'img': read_icon(path, 'svg+xml') + 'img': read_icon(path, format) } } From 93005e7adc7473d32503415ad342d23085505c18 Mon Sep 17 00:00:00 2001 From: Carifio24 Date: Thu, 15 Aug 2024 16:54:33 -0400 Subject: [PATCH 2/2] Determine the MIME type for the icon path. --- glue_jupyter/common/toolbar_vuetify.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/glue_jupyter/common/toolbar_vuetify.py b/glue_jupyter/common/toolbar_vuetify.py index 10423081..a749bff4 100644 --- a/glue_jupyter/common/toolbar_vuetify.py +++ b/glue_jupyter/common/toolbar_vuetify.py @@ -1,3 +1,4 @@ +from mimetypes import guess_type import os import ipyvuetify as v import traitlets @@ -76,7 +77,11 @@ def add_tool(self, tool): else: path = icon_path(tool.icon, icon_format=ext) - format = "svg+xml" if ext == "svg" else ext + format = guess_type(path)[0] + image_prefix = "image/" + if format is None or not format.startswith(image_prefix): + raise ValueError(f"Invalid or unknown image MIME type for: {path}") + format = format[len(image_prefix):] self.tools_data = { **self.tools_data, tool.tool_id: {