@@ -377,21 +377,36 @@ def _install_macro_to_toolbar(self, toolbar) -> None:
377
377
+ " "
378
378
+ self .addon_to_install .display_name
379
379
)
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" )
386
400
)
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 "
390
409
)
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 :
395
410
pixmap_text = None
396
411
397
412
# Add this command to that toolbar
0 commit comments