From d9384308fe16744aad0e4f4251641722742fd944 Mon Sep 17 00:00:00 2001 From: kramo Date: Fri, 5 Apr 2024 11:57:22 +0200 Subject: [PATCH] Make it so only one preferences dialog can be open --- cartridges/main.py | 3 +++ cartridges/preferences.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/cartridges/main.py b/cartridges/main.py index ccb0dd7..5cf27bc 100644 --- a/cartridges/main.py +++ b/cartridges/main.py @@ -285,6 +285,9 @@ class CartridgesApplication(Adw.Application): page_name: Optional[str] = None, expander_row: Optional[str] = None, ) -> CartridgesWindow: + if CartridgesPreferences.is_open: + return + win = CartridgesPreferences() if page_name: win.set_visible_page_name(page_name) diff --git a/cartridges/preferences.py b/cartridges/preferences.py index 526d0d6..f9a6dff 100644 --- a/cartridges/preferences.py +++ b/cartridges/preferences.py @@ -118,8 +118,15 @@ class CartridgesPreferences(Adw.PreferencesDialog): removed_games: set[Game] = set() warning_menu_buttons: dict = {} + is_open = False + def __init__(self, **kwargs: Any) -> None: super().__init__(**kwargs) + + # Make it so only one dialog can be open at a time + self.__class__.is_open = True + self.connect("closed", lambda *_: self.set_is_open(False)) + self.file_chooser = Gtk.FileDialog() self.toast = Adw.Toast.new(_("All games removed")) @@ -247,6 +254,9 @@ class CartridgesPreferences(Adw.PreferencesDialog): self.sgdb_key_entry_row.connect("changed", set_sgdb_sensitive) set_sgdb_sensitive(self.sgdb_key_entry_row) + def set_is_open(self, is_open: bool) -> None: + self.__class__.is_open = is_open + def get_switch(self, setting: str) -> Any: return getattr(self, f'{setting.replace("-", "_")}_switch')