From 72024c5d4327f0fb87ccccf93b38d084a9d0cc46 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 25 May 2026 00:03:21 +0900 Subject: [PATCH] fix: refresh increment overwriting when changing tabs --- dzgui/controllers/mc.py | 13 ++----------- dzgui/model/servers.py | 12 +++++++----- dzgui/views/components/buttons.py | 17 ++++++++++++----- dzgui/views/components/right_panel.py | 6 +++--- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index e8befc8..0628502 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -84,7 +84,6 @@ class Controller(GObject.GObject): self.emitter = Emitter() self.emitter.connect("map_selection_changed", self._on_map_selection_changed) self.emitter.connect("check_toggled", self._on_check_toggled) - self.emitter.connect("servers_loaded_init", self._on_servers_loaded_init) # NOTE: suppress requests until entire UI is loaded self.loaded = False @@ -321,6 +320,7 @@ class Controller(GObject.GObject): self.mediator.filters.button_grid.block_toggles(True) self.populate_filter_prefs() self.mediator.filters.button_grid.block_toggles(False) + self.emitter.emit("lan_page_initialized") ServerModelManager(self, tv).load() def populate_filter_prefs(self) -> None: @@ -347,16 +347,7 @@ class Controller(GObject.GObject): filter_man = self.get_filter_man() return filter_man.get_filters() - # TODO: rename - def _on_servers_loaded_init(self, emitter: "Emitter") -> None: - """Triggered after servers load but prior to maps loading""" - # FIXME: wipe maps store when changing tabs if model is none - # e.g. select recent, toggle map, then select lan -> not wiped - tv = self.get_active_treeview() - if tv.loaded is False: - return - store = self.get_map_store() - self.emitter.emit("load_maps", store) + # FIXME: wipe maps store when changing tabs if model is none def has_server_model(self) -> bool: treeview = self.get_active_treeview() diff --git a/dzgui/model/servers.py b/dzgui/model/servers.py index 232b5cd..db9cac7 100644 --- a/dzgui/model/servers.py +++ b/dzgui/model/servers.py @@ -243,9 +243,11 @@ class ServerModelManager: filter_man = self.tv.get_filter_man() maps = self._get_new_maps() filter_man.set_unique_maps(maps) + store = filter_man.get_map_store() self.first_iteration = False - self.emitter.emit("servers_loaded_init") + self.emitter.emit("load_maps", store) + # self.emitter.emit("servers_loaded_init") def add_to_history(self, record: dict[str, Any]) -> None: proxy_man = self._get_proxy_man() @@ -378,24 +380,24 @@ class ServerModelManager: # NOTE: maps are set outside of thread because it triggers map changed signals maps = self._get_new_maps() filter_man.set_unique_maps(maps) + store = filter_man.get_map_store() + self.emitter.emit("load_maps", store) self.first_iteration = False - self.emitter.emit("servers_loaded_init") self.emitter.emit("saved_servers_changed") def _update_maps(self) -> None: filter_man = self.tv.get_filter_man() filter_man.set_unique_maps(self._get_new_maps()) - self.emitter.emit("servers_loaded_init") + store = filter_man.get_map_store() + self.emitter.emit("load_maps", store) self.first_iteration = False def _cleanup_on_success(self) -> None: proxy = self._get_proxy_man().get_proxy_model() self.tv.set_model(proxy) - # TODO: servers_loaded vs servers_reloaded self.emitter.emit("servers_loaded", self.enum) - if self.first_iteration: self._update_maps() diff --git a/dzgui/views/components/buttons.py b/dzgui/views/components/buttons.py index e15ab5b..92147e1 100644 --- a/dzgui/views/components/buttons.py +++ b/dzgui/views/components/buttons.py @@ -94,9 +94,11 @@ class RefreshButton(IconTextButton): icon=REFRESH_ICON, label=atomic_buttons.refresh, ) + self.controller = controller emitter = self.controller.get_emitter() self.loading = False + self.clicked = False self.time = 30 @@ -110,17 +112,21 @@ class RefreshButton(IconTextButton): def _on_refresh_clicked(self, button: Self) -> None: """Spawned in a thread""" - self.loading = True + self.clicked = True self.controller.refresh_tree() # TODO: get server tab enum # if LAN tab, reload existing entries in place def start_decrement(self, emitter: "Emitter", tab: "ServerTab") -> None: + if self.clicked is False: + return if self.loading: - self.set_sensitive(False) - self.loading = False - self.show_time(True) - GLib.timeout_add_seconds(1, self.decrement) + return + self.set_sensitive(False) + self.loading = True + self.clicked = False + self.show_time(True) + GLib.timeout_add_seconds(1, self.decrement) def decrement(self) -> bool: self.time -= 1 @@ -128,6 +134,7 @@ class RefreshButton(IconTextButton): self.time = 30 self.show_time(False) self.set_sensitive(True) + self.loading = False return False self.show_time(True) return True diff --git a/dzgui/views/components/right_panel.py b/dzgui/views/components/right_panel.py index bea007c..d8d1d21 100644 --- a/dzgui/views/components/right_panel.py +++ b/dzgui/views/components/right_panel.py @@ -107,16 +107,16 @@ class RightPanel(Gtk.Box): if page.loaded is True: return self.filters_vbox.set_sensitive(False) + # TODO: unless it is lan page + #self.refresh_button.set_sensitive(False) def _on_lan_page_init(self, emitter: "Emitter") -> None: self.filters_vbox.set_sensitive(False) - #self.refresh_button.set_sensitive(False) def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None: # TODO: similar logic on notebook page change state = self.controller.has_server_model() - for el in self.filters_vbox, self.refresh_button: - el.set_sensitive(state) + self.filters_vbox.set_sensitive(state) def _on_version_clicked(self, widget: Gtk.EventBox, event: Gdk.EventButton) -> None: def revert() -> Literal[False]: