From ca7ff29212fc551a70369eeefaee723c19ebbb70 Mon Sep 17 00:00:00 2001 From: Kiehl Date: Mon, 16 Sep 2019 14:37:59 -0700 Subject: [PATCH] update Gooey program icon and fix OSX task bar rendering --- gooey/gui/containers/application.py | 10 +++++++++- gooey/gui/image_repository.py | 2 +- gooey/gui/util/freeze.py | 1 - gooey/images/program_icon.png | Bin 0 -> 14762 bytes 4 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 gooey/images/program_icon.png diff --git a/gooey/gui/containers/application.py b/gooey/gui/containers/application.py index 49fac7d..9a99bfc 100644 --- a/gooey/gui/containers/application.py +++ b/gooey/gui/containers/application.py @@ -5,6 +5,7 @@ Primary orchestration and control point for Gooey. import sys import wx +from wx.adv import TaskBarIcon from gooey.gui import cli from gooey.gui import events @@ -187,7 +188,14 @@ class GooeyApplication(wx.Frame): self.SetSizer(sizer) self.console.Hide() self.Layout() - self.SetIcon(wx.Icon(self.buildSpec['images']['programIcon'], wx.BITMAP_TYPE_ICO)) + # Program Icon (Windows) + icon = wx.Icon(self.buildSpec['images']['programIcon'], wx.BITMAP_TYPE_PNG) + self.SetIcon(icon) + # OSX needs to have its taskbar icon explicitly set + # bizarrely, wx requires the TaskBarIcon to be attached to the Frame + # as instance data (self.). Otherwise, it will not render correctly. + self.taskbarIcon = TaskBarIcon(iconType=wx.adv.TBI_DOCK) + self.taskbarIcon.SetIcon(icon) diff --git a/gooey/gui/image_repository.py b/gooey/gui/image_repository.py index c29d035..dcb40da 100644 --- a/gooey/gui/image_repository.py +++ b/gooey/gui/image_repository.py @@ -12,7 +12,7 @@ from gooey.gui.util.freeze import getResourcePath from gooey.util.functional import merge filenames = { - 'programIcon': 'program_icon.ico', + 'programIcon': 'program_icon.png', 'successIcon': 'success_icon.png', 'runningIcon': 'running_icon.png', 'loadingIcon': 'loading_icon.gif', diff --git a/gooey/gui/util/freeze.py b/gooey/gui/util/freeze.py index d3a84f4..b3eb4d4 100644 --- a/gooey/gui/util/freeze.py +++ b/gooey/gui/util/freeze.py @@ -45,4 +45,3 @@ def localResourcePath(path): return os.path.join(basedir or sys.executable, path) else: return os.path.join(os.getcwd(), path) - \ No newline at end of file diff --git a/gooey/images/program_icon.png b/gooey/images/program_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8823475f0a517606d0a46286b67785fccb67f9 GIT binary patch literal 14762 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 literal 0 HcmV?d00001