chore: simplify CalcDist

This commit is contained in:
aclist 2026-04-28 22:04:17 +09:00
parent 52d51f2bd7
commit cba884da7e
5 changed files with 19 additions and 25 deletions

View File

@ -484,9 +484,6 @@ class Controller(GObject.GObject):
def get_statusbar(self) -> "Statusbar":
return self.mediator.statusbar
#def get_proxy_man(self) -> "ProxyModelManager":
# return self.proxy_man
def populate_model(self, tv: "ServerTreeView") -> None:
# NOTE: skip on previously loaded tabs
if tv.is_loaded():
@ -499,14 +496,13 @@ class Controller(GObject.GObject):
def get_dist_cache(self) -> dict[str, "Haversine"]:
return self.dist_cache
def set_dist_cache(self, addr: str, haversine: "Haversine") -> None:
self.dist_cache[addr] = haversine
def get_map_store(self) -> Gtk.ListStore:
filter_man = self.get_filter_man()
return filter_man.get_map_store()
#def get_selected_map(self) -> str:
# filter_man = self.get_filter_man()
# return filter_man.get_selected_map()
def get_enabled_filters(self) -> dict:
filter_man = self.get_filter_man()
return filter_man.get_filters()
@ -566,7 +562,7 @@ class Controller(GObject.GObject):
return False
return True
#def is_in_favs(self) -> bool:
# def is_in_favs(self) -> bool:
# return self.config_man.is_in_favs()
def get_config_man(self) -> ConfigManager:

View File

@ -79,7 +79,7 @@ class ConfigManager:
raise e
# TODO: strings
@call_on_thread("checking api")
@call_on_thread("Checking api")
def update_api_key(self, key: Preferences, text: str) -> None:
if key is Preferences.STEAM:
res = test_steam_api(text)

View File

@ -1,7 +1,7 @@
import logging
from math import radians, cos, sin, asin, sqrt
from typing import TYPE_CHECKING
from typing import Self, TYPE_CHECKING
from dzgui.util.ip import GeolocationError, get_coords
@ -47,6 +47,7 @@ class CalcDist:
enum: "ServerTab",
result_queue: "Queue",
controller: "Controller",
cache: dict[str, Haversine],
) -> None:
super().__init__()
@ -56,17 +57,10 @@ class CalcDist:
self.addr = addr
self.ip = self.addr
cache = self.controller.get_dist_cache()
if self.addr in cache:
logger.info(f"Address '{self.addr}' already in cache")
self.result_queue.put([self.addr, cache[self.addr], self.enum])
return
dist = self.compare(self.ip)
self.result_queue.put([self.addr, dist, self.enum])
def compare(self, remote: str) -> int | None:
# TODO: cache this
prefs = self.controller.get_prefs()
local = prefs.coords
if local is None:

View File

@ -36,8 +36,9 @@ class ButtonGrid(Gtk.Grid):
# TODO: use enumerated checks
for check in defaults.keys():
checkbox = Gtk.CheckButton(label=check)
label = checkbox.get_children()
label[0].set_ellipsize(Pango.EllipsizeMode.END)
label = checkbox.get_child()
if label is not None:
label.set_ellipsize(Pango.EllipsizeMode.END)
if defaults[check]:
checkbox.set_active(True)

View File

@ -205,7 +205,7 @@ class ServerTreeView(ContextMixin, TreeView):
thread = threading.Thread(
daemon=True,
target=CalcDist,
args=(record.ip, enum, self.queue, self.controller),
args=(record.ip, enum, self.queue, self.controller, cache),
)
thread.start()
@ -218,10 +218,9 @@ class ServerTreeView(ContextMixin, TreeView):
cache = self.controller.get_dist_cache()
if latest_result:
addr = latest_result[0]
haversine = latest_result[1]
addr, haversine, tab = latest_result
if addr not in cache:
cache[addr] = haversine
self.controller.set_dist_cache(addr, haversine)
# TODO: should be emitting a statusbar signal here instead?
self.controller.set_statusbar_dist(haversine, self.get_enum())
return True
@ -281,7 +280,9 @@ class ServerTreeView(ContextMixin, TreeView):
record = self.get_record()
self.controller.connect_by_record(record)
def _parent_selection_changed(self, base_class: TreeView, sel: Gtk.TreeSelection) -> None:
def _parent_selection_changed(
self, base_class: TreeView, sel: Gtk.TreeSelection
) -> None:
if self.loaded is False:
return
self.start_distcalc()
@ -315,7 +316,9 @@ class ServerTreeView(ContextMixin, TreeView):
self.loaded = status
@staticmethod
def ping_server(model, _iter: Gtk.TreeIter, ip: str, qport: int, ping_column: int) -> None:
def ping_server(
model, _iter: Gtk.TreeIter, ip: str, qport: int, ping_column: int
) -> None:
_ping = ping(ip, qport)
GLib.idle_add(lambda: model.set(_iter, ping_column, _ping))