From 89a6728bf81f658a339757632e3b291768f40f21 Mon Sep 17 00:00:00 2001
From: Juhani Numminen <juhaninumminen0@gmail.com>
Date: Sat, 29 Feb 2020 11:40:01 +0200
Subject: [PATCH] Load icons from either images/misc or images/icons

---
 pysollib/util.py              | 17 ++++++++++++++---
 pysollib/winsystems/common.py |  3 ++-
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/pysollib/util.py b/pysollib/util.py
index 94d38aab..49b83761 100644
--- a/pysollib/util.py
+++ b/pysollib/util.py
@@ -168,9 +168,20 @@ class DataLoader:
         return self.findFile(filename, subdirs)
 
     def findAllIconSizes(self, filename='pysol.png'):
-        icondir = self.findDir(os.path.join('images', 'icons'))
-        icons = [os.path.join(icondir, subdir, filename) for subdir in
-                 os.listdir(icondir)]
+        try:
+            icondir = self.findDir(os.path.join('images', 'icons'))
+            icons = [os.path.join(icondir, subdir, filename) for subdir in
+                     os.listdir(icondir)]
+        except OSError:
+            try:
+                # pysol06.png is known to have transparent borders around it
+                # which is unsuitable for a window icon
+                icon_blacklist = ('pysol06.png',)
+                miscdir = self.findDir(os.path.join('images', 'misc'))
+                icons = [os.path.join(miscdir, f) for f in os.listdir(miscdir)
+                         if f not in icon_blacklist]
+            except OSError:
+                icons = []
         return filter(os.path.isfile, icons)
 
     def findDir(self, filename, subdirs=None):
diff --git a/pysollib/winsystems/common.py b/pysollib/winsystems/common.py
index 3a65bbea..09cdf8c9 100644
--- a/pysollib/winsystems/common.py
+++ b/pysollib/winsystems/common.py
@@ -93,7 +93,8 @@ def base_init_root_window(root, app):
 
     if TOOLKIT == 'tk':
         icons = [loadImage(img) for img in app.dataloader.findAllIconSizes()]
-        root.wm_iconphoto(True, *icons)
+        if icons:
+            root.wm_iconphoto(True, *icons)
 
     # set minsize
     sw, sh = (root.winfo_screenwidth(), root.winfo_screenheight())