Skip to content

Commit b00d9b6

Browse files
authored
Merge pull request #200 from chennes/fixMacroIconMissing
Fix missing macro icon in toolbar code
2 parents b30c2d3 + cb1e3ec commit b00d9b6

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

addonmanager_installer_gui.py

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -377,21 +377,36 @@ def _install_macro_to_toolbar(self, toolbar) -> None:
377377
+ " "
378378
+ self.addon_to_install.display_name
379379
)
380-
if self.addon_to_install.macro.icon:
381-
if os.path.isabs(self.addon_to_install.macro.icon):
382-
pixmap_text = os.path.normpath(self.addon_to_install.macro.icon)
383-
else:
384-
pixmap_text = os.path.normpath(
385-
os.path.join(self.macro_dir, self.addon_to_install.macro.icon)
380+
try:
381+
if self.addon_to_install.macro.icon:
382+
_, ext = os.path.splitext(self.addon_to_install.macro.icon)
383+
extension = ext[1:].lower() if ext else "png"
384+
if self.addon_to_install.macro.icon_data:
385+
macro_name = self.addon_to_install.macro.name
386+
icon_file = os.path.normpath(
387+
os.path.join(self.macro_dir, f"{macro_name}_icon.{extension}")
388+
)
389+
with open(icon_file, "wb") as f:
390+
f.write(self.addon_to_install.macro.icon_data)
391+
pixmap_text = icon_file
392+
else:
393+
fci.Console.PrintMessage(
394+
f"No cached icon data for {self.addon_to_install.macro.name}\n"
395+
)
396+
pixmap_text = None
397+
elif self.addon_to_install.macro.xpm:
398+
icon_file = os.path.normpath(
399+
os.path.join(self.macro_dir, self.addon_to_install.macro.name + "_icon.xpm")
386400
)
387-
elif self.addon_to_install.macro.xpm:
388-
icon_file = os.path.normpath(
389-
os.path.join(self.macro_dir, self.addon_to_install.macro.name + "_icon.xpm")
401+
with open(icon_file, "w", encoding="utf-8") as f:
402+
f.write(self.addon_to_install.macro.xpm)
403+
pixmap_text = icon_file
404+
else:
405+
pixmap_text = None
406+
except OSError:
407+
fci.Console.PrintWarning(
408+
f"Could not create icon for {self.addon_to_install.macro.name} in {self.macro_dir}\n"
390409
)
391-
with open(icon_file, "w", encoding="utf-8") as f:
392-
f.write(self.addon_to_install.macro.xpm)
393-
pixmap_text = icon_file
394-
else:
395410
pixmap_text = None
396411

397412
# Add this command to that toolbar

0 commit comments

Comments
 (0)