chore: simplify controller logic

This commit is contained in:
aclist committed 2026-05-01 21:01:28 +09:00
1 parent 7a9f0dc096
commit eb4ee41742
3 files changed
+23 -22

No files matched your search

+4 -22
View File
@@ -25,7 +25,6 @@ from dzgui.managers.notes import NoteManager
from dzgui.model.servers import ServerModelManager from dzgui.model.servers import ServerModelManager
from dzgui.util.diag import write_diagnostic from dzgui.util.diag import write_diagnostic
from dzgui.util.format import format_player_count 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.util.open_links import open_user_workshop, open_workshop_page
from dzgui.views.dialogs.filepicker import FilePicker from dzgui.views.dialogs.filepicker import FilePicker
from dzgui.views.dialogs.generic import ExceptionDialog from dzgui.views.dialogs.generic import ExceptionDialog
@@ -150,7 +149,6 @@ class Controller(GObject.GObject):
def remove_statusbar(self, context: "NotebookPage | ServerTab") -> None: def remove_statusbar(self, context: "NotebookPage | ServerTab") -> None:
self.mediator.statusbar.pop(context) self.mediator.statusbar.pop(context)
# TODO: StatusBarManager, move out of here
def set_statusbar_dist(self, haversine: "Haversine", enum: "ServerTab") -> None: def set_statusbar_dist(self, haversine: "Haversine", enum: "ServerTab") -> None:
""" """
NOTE: prevents race condition when server tab changed, NOTE: prevents race condition when server tab changed,
@@ -165,19 +163,7 @@ class Controller(GObject.GObject):
self.emitter.emit("distcalc_ended", None, context) self.emitter.emit("distcalc_ended", None, context)
return return
dist: str dist = haversine.get_rounded(self.prefs.use_miles)
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"
self.emitter.emit("distcalc_ended", dist, context) self.emitter.emit("distcalc_ended", dist, context)
def toggle_config(self, key: Preferences) -> None: def toggle_config(self, key: Preferences) -> None:
@@ -301,13 +287,10 @@ class Controller(GObject.GObject):
treeview.set_loaded(False) treeview.set_loaded(False)
ServerModelManager(self, treeview).refresh() ServerModelManager(self, treeview).refresh()
# TODO: move to servermodelman
def get_player_count(self) -> str: def get_player_count(self) -> str:
treeview = self.get_active_treeview() treeview = self.get_active_treeview()
model = treeview.get_model() model, control = treeview.get_model_and_control_model()
proxy_man = treeview.get_proxy_man() count = format_player_count(model, control)
control_model = proxy_man.get_control()
count = format_player_count(model, control_model)
return count return count
def get_statusbar(self) -> "Statusbar": def get_statusbar(self) -> "Statusbar":
@@ -318,8 +301,7 @@ class Controller(GObject.GObject):
if tv.is_loaded(): if tv.is_loaded():
self.emitter.emit("servers_loaded", tv.get_enum()) self.emitter.emit("servers_loaded", tv.get_enum())
return return
# TODO: placeholder logic, wipe statusbar when changing page self.mediator.statusbar.set_by_context(tv.get_enum(), "")
self.mediator.statusbar.set_text("", "")
ServerModelManager(self, tv).load() ServerModelManager(self, tv).load()
def get_dist_cache(self) -> dict[str, "Haversine"]: def get_dist_cache(self) -> dict[str, "Haversine"]:
+13
View File
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
from dzgui.const.constants import APP_NAME from dzgui.const.constants import APP_NAME
from dzgui.util.ip import get_coords from dzgui.util.ip import get_coords
from dzgui.util.localize import number
import gi import gi
@@ -40,6 +41,18 @@ class Haversine:
def as_miles(self) -> float: def as_miles(self) -> float:
return self.dist / 1609.344 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: class CalcDist:
def __init__( def __init__(
+6
View File
@@ -30,6 +30,7 @@ logger = logging.getLogger(APP_NAME)
if TYPE_CHECKING: if TYPE_CHECKING:
from dzgui.controllers.mc import Controller from dzgui.controllers.mc import Controller
from dzgui.controllers.emitter import Emitter from dzgui.controllers.emitter import Emitter
from dzgui.model.model_factory import FastInsertListStore
QUEUE_CHECK_DELAY = 200 QUEUE_CHECK_DELAY = 200
@@ -316,6 +317,11 @@ class ServerTreeView(ContextMixin, TreeView):
def set_loaded(self, status: bool) -> None: def set_loaded(self, status: bool) -> None:
self.loaded = status 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 @staticmethod
def ping_server( def ping_server(
model, _iter: Gtk.TreeIter, ip: str, qport: int, ping_column: int model, _iter: Gtk.TreeIter, ip: str, qport: int, ping_column: int