mirror of
https://github.com/aclist/dztui.git
synced 2026-08-30 11:47:17 +02:00
Compare commits
1 Commits
7ac079577f
...
8df2f54471
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8df2f54471 |
@ -472,7 +472,6 @@ def query_by_ip(addr: str) -> A2SInfo:
|
|||||||
return A2SInfo(Record("0", 0, 0), None)
|
return A2SInfo(Record("0", 0, 0), None)
|
||||||
return query_by_record(record, update_gameport=True)
|
return query_by_record(record, update_gameport=True)
|
||||||
|
|
||||||
|
|
||||||
def query_by_id(server_id: int, key: str) -> A2SInfo:
|
def query_by_id(server_id: int, key: str) -> A2SInfo:
|
||||||
"""
|
"""
|
||||||
Used with numeric Battlemetrics IDs
|
Used with numeric Battlemetrics IDs
|
||||||
|
|||||||
@ -17,7 +17,6 @@ class Xdg:
|
|||||||
system: Path
|
system: Path
|
||||||
debug: Path
|
debug: Path
|
||||||
ips: Path
|
ips: Path
|
||||||
filters: Path
|
|
||||||
|
|
||||||
|
|
||||||
def is_writeable(path_str: str) -> bool:
|
def is_writeable(path_str: str) -> bool:
|
||||||
@ -64,6 +63,9 @@ def get_xdg_paths() -> dict:
|
|||||||
|
|
||||||
|
|
||||||
def parse_filepaths(xdg: dict) -> Xdg:
|
def parse_filepaths(xdg: dict) -> Xdg:
|
||||||
|
# cache = xdg["XDG_CACHE_HOME"]
|
||||||
|
# data = xdg["XDG_DATA_HOME"]
|
||||||
|
|
||||||
config = xdg["XDG_CONFIG_HOME"]
|
config = xdg["XDG_CONFIG_HOME"]
|
||||||
state = xdg["XDG_STATE_HOME"]
|
state = xdg["XDG_STATE_HOME"]
|
||||||
|
|
||||||
@ -78,7 +80,6 @@ def parse_filepaths(xdg: dict) -> Xdg:
|
|||||||
history = state / "dzg.history"
|
history = state / "dzg.history"
|
||||||
versions = state / "dzg.versions"
|
versions = state / "dzg.versions"
|
||||||
ips = state / "ips.csv"
|
ips = state / "ips.csv"
|
||||||
filters = state / "dzg.filters.json"
|
|
||||||
|
|
||||||
return Xdg(
|
return Xdg(
|
||||||
config,
|
config,
|
||||||
@ -90,5 +91,4 @@ def parse_filepaths(xdg: dict) -> Xdg:
|
|||||||
system,
|
system,
|
||||||
debug,
|
debug,
|
||||||
ips,
|
ips,
|
||||||
filters
|
|
||||||
)
|
)
|
||||||
|
|||||||
@ -12,7 +12,6 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
# TODO: if servers fail to load, may leave dangling widgets waiting for a signal
|
# TODO: if servers fail to load, may leave dangling widgets waiting for a signal
|
||||||
|
|
||||||
|
|
||||||
class Emitter(GObject.GObject):
|
class Emitter(GObject.GObject):
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@ -151,6 +150,3 @@ class Emitter(GObject.GObject):
|
|||||||
def keyword_set(self, keyword: str) -> None:
|
def keyword_set(self, keyword: str) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=())
|
|
||||||
def lan_page_initialized(self) -> None:
|
|
||||||
pass
|
|
||||||
|
|||||||
@ -260,21 +260,6 @@ class Controller(GObject.GObject):
|
|||||||
def select_colorized(self) -> None:
|
def select_colorized(self) -> None:
|
||||||
self.mod_man.select_colorized()
|
self.mod_man.select_colorized()
|
||||||
|
|
||||||
def get_all_tree_filters(self) -> dict[str, dict[str, bool]]:
|
|
||||||
servers = self.get_servers()
|
|
||||||
all_filters: dict[str, dict[str, bool]] = {}
|
|
||||||
trees = (
|
|
||||||
servers.get_browser(),
|
|
||||||
servers.get_saved(),
|
|
||||||
servers.get_recent(),
|
|
||||||
servers.get_lan(),
|
|
||||||
)
|
|
||||||
for tree in trees:
|
|
||||||
enum = str(tree.get_enum())
|
|
||||||
filters = tree.get_filter_man().get_filters()
|
|
||||||
all_filters[enum] = filters
|
|
||||||
return all_filters
|
|
||||||
|
|
||||||
def get_filter_man(self) -> "FilterManager":
|
def get_filter_man(self) -> "FilterManager":
|
||||||
"""Each ServerTreeView has an atomic FilterManager"""
|
"""Each ServerTreeView has an atomic FilterManager"""
|
||||||
return self.get_active_treeview().get_filter_man()
|
return self.get_active_treeview().get_filter_man()
|
||||||
@ -318,21 +303,8 @@ class Controller(GObject.GObject):
|
|||||||
self.emitter.emit("servers_loaded", tv.get_enum())
|
self.emitter.emit("servers_loaded", tv.get_enum())
|
||||||
return
|
return
|
||||||
self.mediator.statusbar.set_by_context(tv.get_enum(), "")
|
self.mediator.statusbar.set_by_context(tv.get_enum(), "")
|
||||||
self.mediator.filters.button_grid.block_toggles(True)
|
|
||||||
self.populate_filter_prefs()
|
|
||||||
self.mediator.filters.button_grid.block_toggles(False)
|
|
||||||
ServerModelManager(self, tv).load()
|
ServerModelManager(self, tv).load()
|
||||||
|
|
||||||
def populate_filter_prefs(self) -> None:
|
|
||||||
tv = self.get_active_treeview()
|
|
||||||
filters = self.config_man.get_filters(tv)
|
|
||||||
if filters is None:
|
|
||||||
return
|
|
||||||
filter_man = self.get_filter_man()
|
|
||||||
for filt, state in filters.items():
|
|
||||||
filter_man.set_filter(filt, state)
|
|
||||||
self.mediator.filters.set_filters(filters)
|
|
||||||
|
|
||||||
def get_dist_cache(self) -> dict[str, "Haversine"]:
|
def get_dist_cache(self) -> dict[str, "Haversine"]:
|
||||||
return self.dist_cache
|
return self.dist_cache
|
||||||
|
|
||||||
|
|||||||
@ -159,9 +159,6 @@ class ConfigManager:
|
|||||||
|
|
||||||
def save_res_and_quit(self, tv: "ServerTreeView", window: "OuterWindow") -> None:
|
def save_res_and_quit(self, tv: "ServerTreeView", window: "OuterWindow") -> None:
|
||||||
columns = tv.get_columns()
|
columns = tv.get_columns()
|
||||||
filters = self.controller.get_all_tree_filters()
|
|
||||||
filters_file = self.prefs.paths.filters
|
|
||||||
|
|
||||||
columns_file = self.prefs.paths.columns
|
columns_file = self.prefs.paths.columns
|
||||||
try:
|
try:
|
||||||
data = read_json(columns_file)
|
data = read_json(columns_file)
|
||||||
@ -176,7 +173,6 @@ class ConfigManager:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
write_json(data, columns_file)
|
write_json(data, columns_file)
|
||||||
write_json(filters, filters_file)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.critical(e)
|
logger.critical(e)
|
||||||
|
|
||||||
@ -220,12 +216,3 @@ class ConfigManager:
|
|||||||
h = WINDOW_DEFAULT_Y
|
h = WINDOW_DEFAULT_Y
|
||||||
logger.info(f"Using default window size {w},{h}")
|
logger.info(f"Using default window size {w},{h}")
|
||||||
window.set_default_size(w, h)
|
window.set_default_size(w, h)
|
||||||
|
|
||||||
def get_filters(self, tv: "ServerTreeView") -> Any | None:
|
|
||||||
filters = self.prefs.paths.filters
|
|
||||||
try:
|
|
||||||
enum = tv.get_enum()
|
|
||||||
filters = read_json(filters)
|
|
||||||
return filters[str(enum)]
|
|
||||||
except Exception:
|
|
||||||
return None
|
|
||||||
|
|||||||
@ -122,7 +122,6 @@ class ProxyModelManager:
|
|||||||
# TODO: filter cache: return a dataclass object with clearly enumerated map, keyword, and filter values
|
# TODO: filter cache: return a dataclass object with clearly enumerated map, keyword, and filter values
|
||||||
# instead of just a serial list of strings
|
# instead of just a serial list of strings
|
||||||
filters = self.filter_man.get_all_filters()
|
filters = self.filter_man.get_all_filters()
|
||||||
print(filters)
|
|
||||||
|
|
||||||
if skip_cache is False:
|
if skip_cache is False:
|
||||||
if filters in self.filter_cache:
|
if filters in self.filter_cache:
|
||||||
|
|||||||
@ -73,7 +73,6 @@ class ServerModelManager:
|
|||||||
self._dump_history()
|
self._dump_history()
|
||||||
case ServerTab.LAN:
|
case ServerTab.LAN:
|
||||||
# NOTE: LAN tab is only loaded on demand
|
# NOTE: LAN tab is only loaded on demand
|
||||||
self.emitter.emit("lan_page_initialized")
|
|
||||||
pass
|
pass
|
||||||
case _:
|
case _:
|
||||||
pass
|
pass
|
||||||
@ -124,7 +123,7 @@ class ServerModelManager:
|
|||||||
parsed = Servers.parse_json(servers)
|
parsed = Servers.parse_json(servers)
|
||||||
self._push_data(parsed)
|
self._push_data(parsed)
|
||||||
|
|
||||||
@call_on_thread(dialog.scanning, show_cancel=True)
|
@call_on_thread(dialog.scanning)
|
||||||
def dump_lan(self, port: int, early_abort: bool) -> None:
|
def dump_lan(self, port: int, early_abort: bool) -> None:
|
||||||
self.first_iteration = True
|
self.first_iteration = True
|
||||||
|
|
||||||
@ -138,11 +137,6 @@ class ServerModelManager:
|
|||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
try:
|
||||||
if self.controller.get_exit_event().is_set():
|
if self.controller.get_exit_event().is_set():
|
||||||
event.set()
|
|
||||||
return
|
|
||||||
if self.controller.get_cancel_event().is_set():
|
|
||||||
event.set()
|
|
||||||
self.controller.clear_cancel_event()
|
|
||||||
return
|
return
|
||||||
res = future.result(timeout=LAN_TIMEOUT)
|
res = future.result(timeout=LAN_TIMEOUT)
|
||||||
if res is None:
|
if res is None:
|
||||||
|
|||||||
@ -68,7 +68,6 @@ class ButtonGrid(Gtk.Grid):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def reload_filters(self) -> None:
|
def reload_filters(self) -> None:
|
||||||
# TODO: may be superfluous
|
|
||||||
checkboxes = self.checks
|
checkboxes = self.checks
|
||||||
self.block_toggles(True)
|
self.block_toggles(True)
|
||||||
filters = self.controller.get_enabled_filters()
|
filters = self.controller.get_enabled_filters()
|
||||||
@ -331,8 +330,3 @@ class FilterPanel(Gtk.Box):
|
|||||||
self.block_map_change_propagation = False
|
self.block_map_change_propagation = False
|
||||||
return
|
return
|
||||||
self.emitter.emit("map_selection_changed", name)
|
self.emitter.emit("map_selection_changed", name)
|
||||||
|
|
||||||
def set_filters(self, filters: dict[str, bool]) -> None:
|
|
||||||
for check in self.button_grid.checks:
|
|
||||||
label = check.get_label()
|
|
||||||
check.set_active(filters[label])
|
|
||||||
|
|||||||
@ -52,7 +52,6 @@ class RightPanel(Gtk.Box):
|
|||||||
emitter = controller.get_emitter()
|
emitter = controller.get_emitter()
|
||||||
emitter.connect("servers_loaded", self._on_servers_loaded)
|
emitter.connect("servers_loaded", self._on_servers_loaded)
|
||||||
emitter.connect("server_page_changed", self._on_server_page_changed)
|
emitter.connect("server_page_changed", self._on_server_page_changed)
|
||||||
emitter.connect("lan_page_initialized", self._on_lan_page_init)
|
|
||||||
|
|
||||||
self.button_vbox = ButtonBox(controller)
|
self.button_vbox = ButtonBox(controller)
|
||||||
self.filters_vbox = FilterPanel(controller)
|
self.filters_vbox = FilterPanel(controller)
|
||||||
@ -153,15 +152,10 @@ class RightPanel(Gtk.Box):
|
|||||||
return
|
return
|
||||||
self.filters_vbox.set_sensitive(False)
|
self.filters_vbox.set_sensitive(False)
|
||||||
|
|
||||||
def _on_lan_page_init(self, emitter: "Emitter") -> None:
|
|
||||||
self.filters_vbox.set_sensitive(False)
|
|
||||||
self.refresh_button.set_sensitive(False)
|
|
||||||
|
|
||||||
def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None:
|
def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None:
|
||||||
# TODO: similar logic on notebook page change
|
# TODO: similar logic on notebook page change
|
||||||
state = self.controller.has_server_model()
|
state = self.controller.has_server_model()
|
||||||
for el in self.filters_vbox, self.refresh_button:
|
self.filters_vbox.set_sensitive(state)
|
||||||
el.set_sensitive(state)
|
|
||||||
|
|
||||||
def _on_version_clicked(self, widget: Gtk.EventBox, event: Gdk.EventButton) -> None:
|
def _on_version_clicked(self, widget: Gtk.EventBox, event: Gdk.EventButton) -> None:
|
||||||
def revert() -> Literal[False]:
|
def revert() -> Literal[False]:
|
||||||
|
|||||||
@ -11,5 +11,5 @@ class ModsMixin:
|
|||||||
self, tree: TreeView, path: Gtk.TreePath, column: Gtk.TreeViewColumn
|
self, tree: TreeView, path: Gtk.TreePath, column: Gtk.TreeViewColumn
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
mod = self.get_value_at_index(2) # type: ignore
|
mod = self.get_value_at_index(2)
|
||||||
self.controller.open_workshop_page(mod) # type: ignore
|
self.controller.open_workshop_page(mod) # type: ignore
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user