mirror of
https://github.com/aclist/dztui.git
synced 2026-11-12 04:50:37 +01:00
feat: add get_index() method to ServerRow
This commit is contained in:
1 parent
1b9448735d
commit
f2375feeec
2 files changed
+25
-26
No files matched your search
@@ -58,6 +58,11 @@ class ServerRow:
|
|||||||
getter = cls._to_tuple
|
getter = cls._to_tuple
|
||||||
return [getter(row) for row in rows]
|
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:
|
class FiltrationManager:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from dzgui.api.servers import ping, Record
|
|||||||
from dzgui.const.constants import APP_NAME
|
from dzgui.const.constants import APP_NAME
|
||||||
from dzgui.const.enum import ContextMenuItem, ContextMenuGroup, ServerTab
|
from dzgui.const.enum import ContextMenuItem, ContextMenuGroup, ServerTab
|
||||||
from dzgui.managers.filter import FilterManager
|
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 import strings
|
||||||
from dzgui.util.dist import CalcDist
|
from dzgui.util.dist import CalcDist
|
||||||
from dzgui.util.keys import is_ctrl_mask
|
from dzgui.util.keys import is_ctrl_mask
|
||||||
@@ -29,8 +29,14 @@ if TYPE_CHECKING:
|
|||||||
from dzgui.model.model_factory import FastInsertListStore
|
from dzgui.model.model_factory import FastInsertListStore
|
||||||
from dzgui.util.dist import Haversine
|
from dzgui.util.dist import Haversine
|
||||||
|
|
||||||
|
# TODO: consts
|
||||||
QUEUE_CHECK_DELAY = 200
|
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
|
class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
||||||
def __init__(
|
def __init__(
|
||||||
@@ -140,8 +146,8 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
|||||||
if model is None:
|
if model is None:
|
||||||
return False
|
return False
|
||||||
tree_iter = model.get_iter(path[0])
|
tree_iter = model.get_iter(path[0])
|
||||||
ip = model.get_value(tree_iter, 7)
|
ip = model.get_value(tree_iter, IND_ADDR)
|
||||||
qport = model.get_value(tree_iter, 8)
|
qport = model.get_value(tree_iter, IND_QPORT)
|
||||||
addr = ip + ":" + str(qport)
|
addr = ip + ":" + str(qport)
|
||||||
note = self.controller.get_note_by_record(addr)
|
note = self.controller.get_note_by_record(addr)
|
||||||
|
|
||||||
@@ -164,14 +170,12 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
|||||||
return self.enum
|
return self.enum
|
||||||
|
|
||||||
def _on_map(self, widget: Self) -> None:
|
def _on_map(self, widget: Self) -> None:
|
||||||
# TODO: disable filter panel if current model is None
|
|
||||||
state = self.get_enum() is ServerTab.LAN
|
state = self.get_enum() is ServerTab.LAN
|
||||||
self.emitter.emit("lan_tab_toggled", state)
|
self.emitter.emit("lan_tab_toggled", state)
|
||||||
|
|
||||||
store = self.filter_man.get_map_store()
|
store = self.filter_man.get_map_store()
|
||||||
|
|
||||||
# FIXME: if model is none, wipe maps
|
# TODO: distinguish this signal from changing map combo in-situ
|
||||||
# distinguish this signal from changing map combo in-situ
|
|
||||||
self.emitter.emit("load_maps", store)
|
self.emitter.emit("load_maps", store)
|
||||||
self.handler_id = self.emitter.connect("statusbar_loaded", self.start_distcalc)
|
self.handler_id = self.emitter.connect("statusbar_loaded", self.start_distcalc)
|
||||||
self.start_queue_checker()
|
self.start_queue_checker()
|
||||||
@@ -216,7 +220,7 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
|||||||
|
|
||||||
def _check_result_queue(self) -> Literal[True]:
|
def _check_result_queue(self) -> Literal[True]:
|
||||||
latest_result = None
|
latest_result = None
|
||||||
# FIXME: empty results cause statusbar to be emptied
|
# TODO: Nonetype results cause statusbar to be blank
|
||||||
while not self.queue.empty():
|
while not self.queue.empty():
|
||||||
latest_result = self.queue.get()
|
latest_result = self.queue.get()
|
||||||
|
|
||||||
@@ -262,15 +266,9 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
|||||||
(model, pathlist) = sels
|
(model, pathlist) = sels
|
||||||
path = pathlist[0]
|
path = pathlist[0]
|
||||||
tree_iter = model.get_iter(path)
|
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)
|
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:
|
def is_in_favs(self) -> bool:
|
||||||
record = self.get_record_string()
|
record = self.get_record_string()
|
||||||
if self.controller.get_config_man().is_in_favs(record):
|
if self.controller.get_config_man().is_in_favs(record):
|
||||||
@@ -299,17 +297,17 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
|||||||
self.start_distcalc()
|
self.start_distcalc()
|
||||||
|
|
||||||
def get_name(self) -> str:
|
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:
|
def get_simplified_ip(self) -> str:
|
||||||
addr = self.get_value_at_index(7)
|
addr = self.get_value_at_index(IND_ADDR)
|
||||||
qport = self.get_value_at_index(8)
|
qport = self.get_value_at_index(IND_QPORT)
|
||||||
ip = addr.split(":")[0]
|
ip = addr.split(":")[0]
|
||||||
return f"{ip}:{qport}"
|
return f"{ip}:{qport}"
|
||||||
|
|
||||||
def get_record_string(self) -> str:
|
def get_record_string(self) -> str:
|
||||||
addr = self.get_value_at_index(7)
|
addr = self.get_value_at_index(IND_ADDR)
|
||||||
qport = self.get_value_at_index(8)
|
qport = self.get_value_at_index(IND_QPORT)
|
||||||
return f"{addr}:{qport}"
|
return f"{addr}:{qport}"
|
||||||
|
|
||||||
def get_record(self) -> Record | None:
|
def get_record(self) -> Record | None:
|
||||||
@@ -348,8 +346,7 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
|||||||
def _redraw(
|
def _redraw(
|
||||||
self, model: "FastInsertListStore", _iter: Gtk.TreeIter, _ping: int
|
self, model: "FastInsertListStore", _iter: Gtk.TreeIter, _ping: int
|
||||||
) -> None:
|
) -> None:
|
||||||
ping_column = 9
|
model.set(_iter, IND_PING, _ping)
|
||||||
model.set(_iter, ping_column, _ping)
|
|
||||||
self.queue_draw()
|
self.queue_draw()
|
||||||
|
|
||||||
def wipe_cache(self) -> None:
|
def wipe_cache(self) -> None:
|
||||||
@@ -364,13 +361,10 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
|||||||
data: Any,
|
data: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
addr_column = 7
|
addr = model.get_value(_iter, IND_ADDR).split(":")
|
||||||
qport_column = 8
|
|
||||||
|
|
||||||
addr = model.get_value(_iter, addr_column).split(":")
|
|
||||||
ip = addr[0]
|
ip = addr[0]
|
||||||
gameport = int(addr[1])
|
gameport = int(addr[1])
|
||||||
qport = model.get_value(_iter, qport_column)
|
qport = model.get_value(_iter, IND_QPORT)
|
||||||
record = Record(ip, gameport, qport)
|
record = Record(ip, gameport, qport)
|
||||||
|
|
||||||
if record in self.seen_cache:
|
if record in self.seen_cache:
|
||||||
|
|||||||
Reference in new issue
Block a user