diff --git a/dzgui/controllers/emitter.py b/dzgui/controllers/emitter.py index 46c5700..ba7ef10 100644 --- a/dzgui/controllers/emitter.py +++ b/dzgui/controllers/emitter.py @@ -81,8 +81,8 @@ class Emitter(GObject.GObject): def distcalc_started(self) -> None: pass - @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(bool,)) - def mod_page_toggled(self, state: bool) -> None: + @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(bool, int)) + def mod_page_toggled(self, state: bool, mods: int) -> None: pass @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(bool,)) diff --git a/dzgui/views/components/mod_panel.py b/dzgui/views/components/mod_panel.py index b1c19ea..047fd2d 100644 --- a/dzgui/views/components/mod_panel.py +++ b/dzgui/views/components/mod_panel.py @@ -80,14 +80,18 @@ class ModSelectionPanel(Gtk.Box): self.highlight_stale_button.set_sensitive(True) def _on_mods_updated(self, emitter: "Emitter", msg: str, mods: int) -> None: - if mods < 1: - self.main_panel.set_sensitive(False) - self.stale_panel.set_sensitive(False) + self._toggle_panel_sensitivity(mods) + + def _toggle_panel_sensitivity(self, mods: int) -> None: + state = bool(mods) + for el in self.main_panel, self.stale_panel: + el.set_sensitive(state) def _on_mods_highlighted(self, emitter: "Emitter") -> None: self.swap_sensitive(True) - def _on_mod_page_toggled(self, emitter: "Emitter", state: bool) -> None: + def _on_mod_page_toggled(self, emitter: "Emitter", state: bool, mods: int) -> None: + self._toggle_panel_sensitivity(mods) self.set_visible(state) def swap_sensitive(self, state: bool) -> None: diff --git a/dzgui/views/pages/mods.py b/dzgui/views/pages/mods.py index b840c11..05696a7 100644 --- a/dzgui/views/pages/mods.py +++ b/dzgui/views/pages/mods.py @@ -64,10 +64,15 @@ class Mods(Gtk.Box): self.controller.open_offline() def _on_unmap(self, widget: Self) -> None: - self.emitter.emit("mod_page_toggled", False) + self.emitter.emit("mod_page_toggled", False, 0) def _on_map(self, widget: Self) -> None: - self.emitter.emit("mod_page_toggled", True) + model = self.tree.get_model() + if model is None: + mods = 0 + else: + mods = len(model) + self.emitter.emit("mod_page_toggled", True, mods) # TODO: delegation # NOTE: handles going back from offline mods page # more generic cache restoration method