From eb4ee417423a668c8b1b275cc73cd721df6b111c Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Fri, 1 May 2026 21:01:28 +0900 Subject: [PATCH] chore: simplify controller logic --- dzgui/controllers/mc.py | 26 ++++---------------------- dzgui/util/dist.py | 13 +++++++++++++ dzgui/views/trees/tree_servers.py | 6 ++++++ 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 51e0577..ee05d32 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -25,7 +25,6 @@ from dzgui.managers.notes import NoteManager from dzgui.model.servers import ServerModelManager from dzgui.util.diag import write_diagnostic from dzgui.util.format import format_player_count -from dzgui.util.localize import number from dzgui.util.open_links import open_user_workshop, open_workshop_page from dzgui.views.dialogs.filepicker import FilePicker from dzgui.views.dialogs.generic import ExceptionDialog @@ -150,7 +149,6 @@ class Controller(GObject.GObject): def remove_statusbar(self, context: "NotebookPage | ServerTab") -> None: self.mediator.statusbar.pop(context) - # TODO: StatusBarManager, move out of here def set_statusbar_dist(self, haversine: "Haversine", enum: "ServerTab") -> None: """ NOTE: prevents race condition when server tab changed, @@ -165,19 +163,7 @@ class Controller(GObject.GObject): self.emitter.emit("distcalc_ended", None, context) return - dist: str - if haversine is None: - dist = "Unknown" - else: - if self.prefs.use_miles: - raw = round(haversine.as_miles()) - separated = number(raw) - dist = str(separated) + " mi" - else: - raw = round(haversine.as_kilometers()) - separated = number(raw) - dist = str(separated) + " km" - + dist = haversine.get_rounded(self.prefs.use_miles) self.emitter.emit("distcalc_ended", dist, context) def toggle_config(self, key: Preferences) -> None: @@ -301,13 +287,10 @@ class Controller(GObject.GObject): treeview.set_loaded(False) ServerModelManager(self, treeview).refresh() - # TODO: move to servermodelman def get_player_count(self) -> str: treeview = self.get_active_treeview() - model = treeview.get_model() - proxy_man = treeview.get_proxy_man() - control_model = proxy_man.get_control() - count = format_player_count(model, control_model) + model, control = treeview.get_model_and_control_model() + count = format_player_count(model, control) return count def get_statusbar(self) -> "Statusbar": @@ -318,8 +301,7 @@ class Controller(GObject.GObject): if tv.is_loaded(): self.emitter.emit("servers_loaded", tv.get_enum()) return - # TODO: placeholder logic, wipe statusbar when changing page - self.mediator.statusbar.set_text("", "") + self.mediator.statusbar.set_by_context(tv.get_enum(), "") ServerModelManager(self, tv).load() def get_dist_cache(self) -> dict[str, "Haversine"]: diff --git a/dzgui/util/dist.py b/dzgui/util/dist.py index b1c7721..984dedb 100644 --- a/dzgui/util/dist.py +++ b/dzgui/util/dist.py @@ -5,6 +5,7 @@ from typing import TYPE_CHECKING from dzgui.const.constants import APP_NAME from dzgui.util.ip import get_coords +from dzgui.util.localize import number import gi @@ -40,6 +41,18 @@ class Haversine: def as_miles(self) -> float: return self.dist / 1609.344 + def get_rounded(self, use_miles: bool) -> str: + if self is None: + return "Unknown" + if use_miles: + raw = round(self.as_miles()) + separated = number(raw) + return str(separated) + " mi" + else: + raw = round(self.as_kilometers()) + separated = number(raw) + return str(separated) + " km" + class CalcDist: def __init__( diff --git a/dzgui/views/trees/tree_servers.py b/dzgui/views/trees/tree_servers.py index 3ac8f87..cc416a8 100644 --- a/dzgui/views/trees/tree_servers.py +++ b/dzgui/views/trees/tree_servers.py @@ -30,6 +30,7 @@ logger = logging.getLogger(APP_NAME) if TYPE_CHECKING: from dzgui.controllers.mc import Controller from dzgui.controllers.emitter import Emitter + from dzgui.model.model_factory import FastInsertListStore QUEUE_CHECK_DELAY = 200 @@ -316,6 +317,11 @@ class ServerTreeView(ContextMixin, TreeView): def set_loaded(self, status: bool) -> None: self.loaded = status + def get_model_and_control_model(self) -> tuple["FastInsertListStore", list[Any]]: + model = self.get_model() + control = self.proxy_man.get_control() + return model, control + @staticmethod def ping_server( model, _iter: Gtk.TreeIter, ip: str, qport: int, ping_column: int