Automatically import if changing import settings

This commit is contained in:
kramo
2023-05-15 14:25:19 +02:00
parent 8446635f10
commit 53f273d434

View File

@@ -76,6 +76,7 @@ class PreferencesWindow(Adw.PreferencesWindow):
sgdb_animated_switch = Gtk.Template.Child() sgdb_animated_switch = Gtk.Template.Child()
removed_games = set() removed_games = set()
import_changed = False
def __init__(self, win, **kwargs): def __init__(self, win, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
@@ -114,12 +115,14 @@ class PreferencesWindow(Adw.PreferencesWindow):
value = self.schema.get_strv("steam-extra-dirs") value = self.schema.get_strv("steam-extra-dirs")
value.append(self.file_chooser.select_folder_finish(result).get_path()) value.append(self.file_chooser.select_folder_finish(result).get_path())
self.schema.set_strv("steam-extra-dirs", value) self.schema.set_strv("steam-extra-dirs", value)
self.import_changed = True
except GLib.GError: except GLib.GError:
return return
update_revealer() update_revealer()
def clear_steam_dirs(*_args): def clear_steam_dirs(*_args):
self.schema.set_strv("steam-extra-dirs", []) self.schema.set_strv("steam-extra-dirs", [])
self.import_changed = True
update_revealer() update_revealer()
update_revealer() update_revealer()
@@ -142,7 +145,9 @@ class PreferencesWindow(Adw.PreferencesWindow):
if response == "choose_folder": if response == "choose_folder":
self.choose_folder(widget, set_cache_dir) self.choose_folder(widget, set_cache_dir)
if not lutris_cache_exists(path).exists(): if lutris_cache_exists(self.win, path):
self.import_changed = True
else:
create_dialog( create_dialog(
self.win, self.win,
_("Cache Not Found"), _("Cache Not Found"),
@@ -195,11 +200,25 @@ class PreferencesWindow(Adw.PreferencesWindow):
) )
) )
# Connect the switches that change the behavior of importing to set_import_changed
self.connect_import_switches(
(
"lutris-import-steam",
"heroic-import-epic",
"heroic-import-gog",
"heroic-import-sideload",
)
)
# Windows # Windows
if os.name == "nt": if os.name == "nt":
self.sources_group.remove(self.lutris_expander_row) self.sources_group.remove(self.lutris_expander_row)
self.sources_group.remove(self.bottles_expander_row) self.sources_group.remove(self.bottles_expander_row)
# When the user interacts with a widget that changes the behavior of importing,
# Cartridges should automatically import upon closing the preferences window
self.connect("close-request", self.check_import)
def bind_switches(self, settings): def bind_switches(self, settings):
for setting in settings: for setting in settings:
self.schema.bind( self.schema.bind(
@@ -209,6 +228,12 @@ class PreferencesWindow(Adw.PreferencesWindow):
Gio.SettingsBindFlags.DEFAULT, Gio.SettingsBindFlags.DEFAULT,
) )
def connect_import_switches(self, settings):
for setting in settings:
getattr(self, f'{setting.replace("-", "_")}_switch').connect(
"notify::active", self.set_import_changed, True
)
def choose_folder(self, _widget, function): def choose_folder(self, _widget, function):
self.file_chooser.select_folder(self.win, None, function, None) self.file_chooser.select_folder(self.win, None, function, None)
@@ -244,7 +269,9 @@ class PreferencesWindow(Adw.PreferencesWindow):
if response == "choose_folder": if response == "choose_folder":
win.choose_folder(widget, set_dir) win.choose_folder(widget, set_dir)
if not globals()[f"{source_id}_installed"](win, path): if globals()[f"{source_id}_installed"](win, path):
self.import_changed = True
else:
create_dialog( create_dialog(
win, win,
_("Installation Not Found"), _("Installation Not Found"),
@@ -266,3 +293,14 @@ class PreferencesWindow(Adw.PreferencesWindow):
getattr(win, f"{source_id}_file_chooser_button").connect( getattr(win, f"{source_id}_file_chooser_button").connect(
"clicked", win.choose_folder, set_dir "clicked", win.choose_folder, set_dir
) )
getattr(win, f"{source_id}_expander_row").connect(
"notify::enable-expansion", self.set_import_changed, True
)
def set_import_changed(self, _widget, _param, value):
self.import_changed = value
def check_import(self, *_args):
if self.import_changed:
self.win.get_application().on_import_action()