Skip to content

Commit 8a539f8

Browse files
committed
Fixed exit crashes
Add settings menu to systray
1 parent b3e3760 commit 8a539f8

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

denonremote/main.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,19 @@ def systray_clicked(icon: pystray.Icon, menu: pystray.MenuItem):
107107
app.hide()
108108

109109

110-
def quit_systray(icon: pystray.Icon, menu: pystray.MenuItem):
110+
def systray_settings(icon: pystray.Icon, menu: pystray.MenuItem):
111111
import kivy.app
112-
kivy.app.App.get_running_app().stop()
112+
app = kivy.app.App.get_running_app()
113+
if app.hidden:
114+
app.show()
115+
116+
import kivy.clock
117+
kivy.clock.Clock.schedule_once(kivy.app.App.get_running_app().open_settings)
118+
119+
120+
def systray_quit(icon: pystray.Icon, menu: pystray.MenuItem):
121+
import kivy.clock
122+
kivy.clock.Clock.schedule_once(kivy.app.App.get_running_app().stop)
113123
icon.stop()
114124

115125

@@ -128,8 +138,9 @@ def resource_path(relative_path: str):
128138

129139
def run_gui_from_systray():
130140
default_menu_item = pystray.MenuItem(TITLE, systray_clicked, default=True, visible=True)
131-
quit_menu_item = pystray.MenuItem('Quit', quit_systray)
132-
systray_menu = pystray.Menu(default_menu_item, quit_menu_item)
141+
settings_menu_item = pystray.MenuItem('Settings', systray_settings)
142+
quit_menu_item = pystray.MenuItem('Quit', systray_quit)
143+
systray_menu = pystray.Menu(default_menu_item, settings_menu_item, quit_menu_item)
133144
systray = pystray.Icon(TITLE, menu=systray_menu)
134145
systray.icon = PIL.Image.open(resource_path(r'images/icon.png'))
135146
systray.run(setup=run_gui)
@@ -161,7 +172,7 @@ def parse_args():
161172
# FIXME: Windows only ATM.
162173
mutex = win32event.CreateMutex(None, False, TITLE)
163174
if ERROR_ALREADY_EXISTS == win32api.GetLastError():
164-
exit(f"{TITLE} is already running")
175+
sys.exit(f"{TITLE} is already running")
165176

166177
arguments = parse_args()
167178
configure(arguments)

0 commit comments

Comments
 (0)