From caecef4ecd6f97b103355f7a929a094c71fbc794 Mon Sep 17 00:00:00 2001 From: DevilXD <4180725+DevilXD@users.noreply.github.com> Date: Mon, 15 Jan 2024 12:06:30 +0100 Subject: [PATCH] Make some notification noise when the application terminates without request --- gui.py | 9 +++++++-- main.py | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gui.py b/gui.py index ed93a29..ddc096c 100644 --- a/gui.py +++ b/gui.py @@ -519,7 +519,7 @@ class LoginForm: async def ask_login(self) -> LoginData: self.update(_("gui", "login", "required"), None) # ensure the window isn't hidden into tray when this runs - self._manager.tray.restore() + self._manager.grab_attention(sound=False) while True: self._manager.print(_("gui", "login", "request")) await self.wait_for_login_press() @@ -546,7 +546,7 @@ class LoginForm: async def ask_enter_code(self, user_code: str) -> None: self.update(_("gui", "login", "required"), None) # ensure the window isn't hidden into tray when this runs - self._manager.tray.restore() + self._manager.grab_attention(sound=False) self._manager.print(_("gui", "login", "request")) await self.wait_for_login_press() self._manager.print(f"Enter this code on the Twitch's device activation page: {user_code}") @@ -2108,6 +2108,11 @@ class GUIManager: def save(self, *, force: bool = False) -> None: self._cache.save(force=force) + def grab_attention(self, *, sound: bool = True): + self.tray.restore() + self._root.focus_force() + self._root.bell() + def set_games(self, games: abc.Iterable[Game]) -> None: self.settings.set_games(games) diff --git a/main.py b/main.py index 01efdca..9ad5d4e 100644 --- a/main.py +++ b/main.py @@ -172,8 +172,11 @@ if __name__ == "__main__": client.print(_("gui", "status", "exiting")) await client.shutdown() if not client.gui.close_requested: + # user didn't request the closure client.print(_("status", "terminated")) client.gui.status.update(_("gui", "status", "terminated")) + # notify the user about the closure + client.gui.grab_attention(sound=True) await client.gui.wait_until_closed() # save the application state # NOTE: we have to do it after wait_until_closed,