feat: add get_index() method to ServerRow

This commit is contained in:
aclist committed 2026-11-12 02:04:55 +09:00
1 parent 1b9448735d
commit f2375feeec
2 files changed
+25 -26

No files matched your search

+5
View File
@@ -58,6 +58,11 @@ class ServerRow:
getter = cls._to_tuple
return [getter(row) for row in rows]
@classmethod
def get_index(cls, field: str) -> int:
_fields = [f.name for f in fields(cls)]
return _fields.index(field)
class FiltrationManager:
def __init__(self) -> None:
+20 -26
View File
@@ -10,7 +10,7 @@ from dzgui.api.servers import ping, Record
from dzgui.const.constants import APP_NAME
from dzgui.const.enum import ContextMenuItem, ContextMenuGroup, ServerTab
from dzgui.managers.filter import FilterManager
from dzgui.model.proxy_model import ProxyModelManager
from dzgui.model.proxy_model import ProxyModelManager, ServerRow
from dzgui.util import strings
from dzgui.util.dist import CalcDist
from dzgui.util.keys import is_ctrl_mask
@@ -29,8 +29,14 @@ if TYPE_CHECKING:
from dzgui.model.model_factory import FastInsertListStore
from dzgui.util.dist import Haversine
# TODO: consts
QUEUE_CHECK_DELAY = 200
IND_NAME = ServerRow.get_index("name")
IND_ADDR = ServerRow.get_index("ip")
IND_QPORT = ServerRow.get_index("qport")
IND_PING = ServerRow.get_index("ping")
IND_MODDED = ServerRow.get_index("modded")
class ServerTreeView(ContextMixin, TreeView): # type: ignore
def __init__(
@@ -140,8 +146,8 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
if model is None:
return False
tree_iter = model.get_iter(path[0])
ip = model.get_value(tree_iter, 7)
qport = model.get_value(tree_iter, 8)
ip = model.get_value(tree_iter, IND_ADDR)
qport = model.get_value(tree_iter, IND_QPORT)
addr = ip + ":" + str(qport)
note = self.controller.get_note_by_record(addr)
@@ -164,14 +170,12 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
return self.enum
def _on_map(self, widget: Self) -> None:
# TODO: disable filter panel if current model is None
state = self.get_enum() is ServerTab.LAN
self.emitter.emit("lan_tab_toggled", state)
store = self.filter_man.get_map_store()
# FIXME: if model is none, wipe maps
# distinguish this signal from changing map combo in-situ
# TODO: distinguish this signal from changing map combo in-situ
self.emitter.emit("load_maps", store)
self.handler_id = self.emitter.connect("statusbar_loaded", self.start_distcalc)
self.start_queue_checker()
@@ -216,7 +220,7 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
def _check_result_queue(self) -> Literal[True]:
latest_result = None
# FIXME: empty results cause statusbar to be emptied
# TODO: Nonetype results cause statusbar to be blank
while not self.queue.empty():
latest_result = self.queue.get()
@@ -262,15 +266,9 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
(model, pathlist) = sels
path = pathlist[0]
tree_iter = model.get_iter(path)
has_mods = model.get_value(tree_iter, 11)
has_mods = model.get_value(tree_iter, IND_MODDED)
return bool(has_mods)
# def get_selected_row(self) -> Gtk.TreeModelRow:
# sel = self.get_selection()
# sels = sel.get_selected_rows()
# print(type(sels[0]))
# return sels[0]
def is_in_favs(self) -> bool:
record = self.get_record_string()
if self.controller.get_config_man().is_in_favs(record):
@@ -299,17 +297,17 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
self.start_distcalc()
def get_name(self) -> str:
return str(self.get_value_at_index(0))
return str(self.get_value_at_index(IND_NAME))
def get_simplified_ip(self) -> str:
addr = self.get_value_at_index(7)
qport = self.get_value_at_index(8)
addr = self.get_value_at_index(IND_ADDR)
qport = self.get_value_at_index(IND_QPORT)
ip = addr.split(":")[0]
return f"{ip}:{qport}"
def get_record_string(self) -> str:
addr = self.get_value_at_index(7)
qport = self.get_value_at_index(8)
addr = self.get_value_at_index(IND_ADDR)
qport = self.get_value_at_index(IND_QPORT)
return f"{addr}:{qport}"
def get_record(self) -> Record | None:
@@ -348,8 +346,7 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
def _redraw(
self, model: "FastInsertListStore", _iter: Gtk.TreeIter, _ping: int
) -> None:
ping_column = 9
model.set(_iter, ping_column, _ping)
model.set(_iter, IND_PING, _ping)
self.queue_draw()
def wipe_cache(self) -> None:
@@ -364,13 +361,10 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
data: Any,
) -> None:
addr_column = 7
qport_column = 8
addr = model.get_value(_iter, addr_column).split(":")
addr = model.get_value(_iter, IND_ADDR).split(":")
ip = addr[0]
gameport = int(addr[1])
qport = model.get_value(_iter, qport_column)
qport = model.get_value(_iter, IND_QPORT)
record = Record(ip, gameport, qport)
if record in self.seen_cache: