From f02d959ebcf291f2fa7517e8de0aff03f6e707c5 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 25 Aug 2026 19:56:25 +0900 Subject: [PATCH 1/7] change: write config later --- dzgui/init/migrate.py | 6 +++--- dzgui/views/dialogs/wizard.py | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dzgui/init/migrate.py b/dzgui/init/migrate.py index 97c5587..19bfe8a 100644 --- a/dzgui/init/migrate.py +++ b/dzgui/init/migrate.py @@ -1,3 +1,4 @@ +import json import shutil from pathlib import Path @@ -7,11 +8,10 @@ from dzgui.config.convert import rc2json from dzgui.util._json import read_json, write_json -def migrate_legacy_conf(config: Path) -> None: +def migrate_legacy_conf(config: Path) -> dict[str, Any]: old_conf = Path.home() / LEGACY_CONFIG_PATH j = rc2json(old_conf) - config.parent.mkdir(parents=True, exist_ok=True) - config.write_text(j) + return json.loads(j) def has_new_config(config: Path) -> bool: diff --git a/dzgui/views/dialogs/wizard.py b/dzgui/views/dialogs/wizard.py index 033f7a1..7837f4c 100644 --- a/dzgui/views/dialogs/wizard.py +++ b/dzgui/views/dialogs/wizard.py @@ -305,6 +305,7 @@ class ConfigMigrationPage(EnumeratedWizardPage): ) self.migrated = False + self.migrated_conf: dict[str, Any] = {} self.config = config self.page_type = Gtk.AssistantPageType.INTRO @@ -344,8 +345,7 @@ class ConfigMigrationPage(EnumeratedWizardPage): def _on_import_clicked(self, button: Gtk.Button) -> None: self.grid.set_sensitive(False) try: - # TODO: this could be deferred to the final page (prevents accidental destruction of dialog via ESC) - migrate_legacy_conf(self.config) + self.migrated_conf = migrate_legacy_conf(self.config) self.migrated = True self.success_box.set_visible(True) except Exception: @@ -496,9 +496,9 @@ class Assistant(Gtk.Assistant): pass case ConfigMigrationPage(): if page.is_migrated(): - steam_path = lookup(self.config_path, Preferences.DEFAULT) - self.page6.set_steam_path(steam_path) - offset = 1 if not self.is_binary else 2 + sp = page.migrated_conf["default_steam_path"] + self.page_shortcuts.set_steam_path(sp) + self.write_config(self.page_migration.migrated_conf) self.setup_complete = True return self.get_n_pages() - offset case SteamPathPage(): From 8e3ce722950ecda4a95088cbfd160a5a30b545d0 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 25 Aug 2026 19:57:52 +0900 Subject: [PATCH 2/7] change: do not store pages linearly --- dzgui/views/dialogs/wizard.py | 48 ++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/dzgui/views/dialogs/wizard.py b/dzgui/views/dialogs/wizard.py index 7837f4c..b34fcf0 100644 --- a/dzgui/views/dialogs/wizard.py +++ b/dzgui/views/dialogs/wizard.py @@ -444,13 +444,13 @@ class Assistant(Gtk.Assistant): self.setup_complete = False - self.page1 = IntroductionPage() - self.page2 = ConfigMigrationPage(XDG.config) - self.page3 = SteamPathPage() - self.page4 = SteamValidationPage() - self.page5 = PreferencesPage() - self.page6 = ShortcutCreationPage(XDG.shortcut) - self.page7 = CompletionPage() + self.page_intro = IntroductionPage() + self.page_migration = ConfigMigrationPage(XDG.config) + self.page_paths = SteamPathPage() + self.page_api = SteamValidationPage() + self.page_prefs = PreferencesPage() + self.page_shortcuts = ShortcutCreationPage(XDG.shortcut) + self.page_completion = CompletionPage() self.set_forward_page_func(self._advance_page) @@ -461,13 +461,13 @@ class Assistant(Gtk.Assistant): legacy_path = Path.home().joinpath(LEGACY_CONFIG_PATH) self.has_legacy_config = legacy_path.is_file() for page in ( - self.page1, - self.page2, - self.page3, - self.page4, - self.page5, - self.page6, - self.page7, + self.page_intro, + self.page_migration, + self.page_paths, + self.page_api, + self.page_prefs, + self.page_shortcuts, + self.page_completion, ): # NOTE: skip config migration page if no legacy config file if ( @@ -486,8 +486,14 @@ class Assistant(Gtk.Assistant): self.show_all() load_css() - def write_config(self) -> None: - write_json(self.config_values, self.config_path) + def write_config(self, config: dict[str, Any]) -> None: + write_json(config, self.config_path) + + def get_final_page(self) -> int: + for page in range(0, self.get_n_pages()): + child = self.get_nth_page(page) + if child == self.page_completion: + return page def _advance_page(self, index: int) -> int: page = self.get_nth_page(index) @@ -500,19 +506,21 @@ class Assistant(Gtk.Assistant): self.page_shortcuts.set_steam_path(sp) self.write_config(self.page_migration.migrated_conf) self.setup_complete = True - return self.get_n_pages() - offset + return self.get_final_page() case SteamPathPage(): self.config_values["default_steam_path"] = page.get_path_from_radio() case SteamValidationPage(): self.config_values["steam_api"] = page.get_api_key() case PreferencesPage(): # NOTE: collects config values before advancing to last page - name, use_miles, client = self.page5.get_prefs() + name, use_miles, client = self.page_prefs.get_prefs() self.config_values["name"] = name self.config_values["use_miles"] = use_miles self.config_values["client"] = client - self.write_config() - self.page6.set_steam_path(self.config_values["default_steam_path"]) + self.write_config(self.config_values) + self.page_shortcuts.set_steam_path( + self.config_values["default_steam_path"] + ) self.setup_complete = True case ShortcutCreationPage(): page.create_shortcuts() From ca234b8dea5c2b327bdbaa61f6d2452f01653309 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 25 Aug 2026 19:58:37 +0900 Subject: [PATCH 3/7] drop: unused imports --- dzgui/views/dialogs/wizard.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dzgui/views/dialogs/wizard.py b/dzgui/views/dialogs/wizard.py index b34fcf0..175b567 100644 --- a/dzgui/views/dialogs/wizard.py +++ b/dzgui/views/dialogs/wizard.py @@ -17,9 +17,7 @@ from dzgui.const.constants import ( ) from dzgui.const.boilerplate import config_boilerplate from dzgui.const.endpoints import STEAM_API_SETUP -from dzgui.const.enum import Preferences from dzgui.config import freedesktop -from dzgui.config.query import lookup from dzgui.init.migrate import migrate_legacy_conf from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager from dzgui.strings import wizard From c839672f851519d30b39b84a0c06e6d33fbafe8b Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 25 Aug 2026 20:03:32 +0900 Subject: [PATCH 4/7] chore: clear typehinting errors --- dzgui/init/migrate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dzgui/init/migrate.py b/dzgui/init/migrate.py index 19bfe8a..2a5c0bc 100644 --- a/dzgui/init/migrate.py +++ b/dzgui/init/migrate.py @@ -8,7 +8,7 @@ from dzgui.config.convert import rc2json from dzgui.util._json import read_json, write_json -def migrate_legacy_conf(config: Path) -> dict[str, Any]: +def migrate_legacy_conf(config: Path) -> Any: old_conf = Path.home() / LEGACY_CONFIG_PATH j = rc2json(old_conf) return json.loads(j) From 2383f7d2aab2dfd2c435796ad467e4f54aff6099 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 25 Aug 2026 20:03:42 +0900 Subject: [PATCH 5/7] change: simplify method --- dzgui/views/dialogs/wizard.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dzgui/views/dialogs/wizard.py b/dzgui/views/dialogs/wizard.py index 175b567..8f12dd0 100644 --- a/dzgui/views/dialogs/wizard.py +++ b/dzgui/views/dialogs/wizard.py @@ -488,10 +488,8 @@ class Assistant(Gtk.Assistant): write_json(config, self.config_path) def get_final_page(self) -> int: - for page in range(0, self.get_n_pages()): - child = self.get_nth_page(page) - if child == self.page_completion: - return page + pages = self.get_n_pages() + return pages - 1 def _advance_page(self, index: int) -> int: page = self.get_nth_page(index) From f3fd7ef6ea4841373600484e93ca839fa925b8ac Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 25 Aug 2026 20:09:02 +0900 Subject: [PATCH 6/7] change: revert prior changes --- dzgui/views/dialogs/wizard.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dzgui/views/dialogs/wizard.py b/dzgui/views/dialogs/wizard.py index 8f12dd0..d978a6e 100644 --- a/dzgui/views/dialogs/wizard.py +++ b/dzgui/views/dialogs/wizard.py @@ -489,7 +489,10 @@ class Assistant(Gtk.Assistant): def get_final_page(self) -> int: pages = self.get_n_pages() - return pages - 1 + if self.is_binary: + return pages - 2 + else: + return pages - 1 def _advance_page(self, index: int) -> int: page = self.get_nth_page(index) From 687c5ac1686278b3c769cbbb3511dbcab6fbb67b Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 25 Aug 2026 20:09:56 +0900 Subject: [PATCH 7/7] chore: add comments --- dzgui/views/dialogs/wizard.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dzgui/views/dialogs/wizard.py b/dzgui/views/dialogs/wizard.py index d978a6e..1326917 100644 --- a/dzgui/views/dialogs/wizard.py +++ b/dzgui/views/dialogs/wizard.py @@ -489,6 +489,8 @@ class Assistant(Gtk.Assistant): def get_final_page(self) -> int: pages = self.get_n_pages() + # TODO: might be better to check if path is writeable + # and selectively block certain shortcut options if self.is_binary: return pages - 2 else: