diff --git a/dzgui/controllers/emitter.py b/dzgui/controllers/emitter.py index c90aef7..46c5700 100644 --- a/dzgui/controllers/emitter.py +++ b/dzgui/controllers/emitter.py @@ -172,3 +172,7 @@ class Emitter(GObject.GObject): @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=()) def invalid_custom_mods(self) -> None: pass + + @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=()) + def all_mods_synched(self) -> None: + pass diff --git a/dzgui/views/pages/preconnect.py b/dzgui/views/pages/preconnect.py index 02ec5fc..d913e1e 100644 --- a/dzgui/views/pages/preconnect.py +++ b/dzgui/views/pages/preconnect.py @@ -23,6 +23,7 @@ from gi.repository import Gdk, Gtk # noqa E402 if TYPE_CHECKING: from dzgui.managers.connection import Prerequisites from dzgui.controllers.mc import Controller + from dzgui.controllers.emitter import Emitter @dataclass @@ -191,9 +192,14 @@ class PreConnectionAssistant(Gtk.Box): self.add(self.scrolled_box) self.add(self.button_box) + emitter = self.controller.get_emitter() + emitter.connect("all_mods_synched", self._on_mods_synched) self.connect("key-press-event", self._on_keypress) self.connect("map", self._on_map) + def _on_mods_synched(self, emitter: "Emitter") -> None: + self.tree.mark_mods_synched() + def _on_map(self, widget: Self) -> None: widgets = ( self.tree_frame, @@ -297,10 +303,10 @@ class PreConnectionAssistant(Gtk.Box): self._hide_mod_area() else: self._show_mod_area() - msg = "All mods are up to date." + msg = preconnect.up_to_date self.mod_count.set_text(msg) - if prereqs.required_space == 0: + if prereqs.required_space != 0: self.ok.set_label(preconnect.connect) pretty = number(prereqs.required_space) diff --git a/dzgui/views/trees/tree_server_mods.py b/dzgui/views/trees/tree_server_mods.py index 0659c31..4991846 100644 --- a/dzgui/views/trees/tree_server_mods.py +++ b/dzgui/views/trees/tree_server_mods.py @@ -13,6 +13,7 @@ from gi.repository import Gtk, GLib, Gdk, Pango # noqa if TYPE_CHECKING: from dzgui.controllers.mc import Controller + from dzgui.controllers.emitter import Emitter class ServerModTreeView(ContextMixin, TreeView): # type: ignore @@ -48,6 +49,10 @@ class ServerModTreeView(ContextMixin, TreeView): # type: ignore case _: pass + def mark_mods_synched(self) -> None: + for row in self.mod_store: + row[2] = server_mods.checkmark + # TODO: could be problematic if user downloads mods out of band def _on_row_activated( self,