From 2c9b36ba84181e176c166a9b024d03d6e5587dd8 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 28 May 2026 05:24:23 +0900 Subject: [PATCH] fix: append history queue (WIP) --- dzgui/api/pefile.py | 3 +-- dzgui/controllers/mc.py | 7 +++++-- dzgui/managers/config.py | 13 +++++++++---- dzgui/managers/connection.py | 2 +- dzgui/model/proxy_model.py | 5 +++-- dzgui/model/servers.py | 18 ++++++++++-------- 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/dzgui/api/pefile.py b/dzgui/api/pefile.py index d9498eb..3688cdb 100644 --- a/dzgui/api/pefile.py +++ b/dzgui/api/pefile.py @@ -456,6 +456,5 @@ def get_pretty_version(steam_path: Path, appid: int) -> str | None: vers = get_dayz_version(pe_file_path) dayz_version = dayz_version_to_str(vers) return dayz_version - except Exception as e: - print(e) + except Exception: return None diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index ae24e66..53a8b14 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -409,9 +409,12 @@ class Controller(GObject.GObject): saved_tree = self.get_servers().get_saved() ServerModelManager(self, saved_tree).remove_by_record(record) - def add_to_history(self, record: dict[str, Any]) -> None: + def add_to_history(self, row: dict[str, Any], record: "Record") -> None: tv = self.get_servers().get_recent() - ServerModelManager(self, tv).add_to_history(record) + ServerModelManager(self, tv).add_to_history((row, record)) + + # def append_to_history(self, record: "Record") -> None: + # self.config_man.append_to_history_file(record) def remove_from_history(self, record: "Record") -> None: # NOTE: remove action is only possible from history tree context menu, diff --git a/dzgui/managers/config.py b/dzgui/managers/config.py index e550e19..5bdcc7f 100644 --- a/dzgui/managers/config.py +++ b/dzgui/managers/config.py @@ -1,6 +1,7 @@ import logging import traceback +from collections import deque from typing import Any, TYPE_CHECKING from dzgui.const.constants import ( @@ -52,11 +53,15 @@ class ConfigManager: ips.append(record) self.update_config(Preferences.IP_LIST, ips) - def update_history_file(self, records: list[Any]) -> None: + def update_history_file(self, fqip: str) -> None: + with open(self.prefs.paths.history, "r") as f: + lines = [line.rstrip() for line in f.readlines()] + lines.append(fqip) + lines = set(lines) + dq = deque(lines, maxlen=10) with open(self.prefs.paths.history, "w") as f: - for record in records: - addr = f"{record[7]}:{record[8]}" - f.write(f"{addr}\n") + for record in dq: + f.write(f"{record}\n") def remove_saved_server(self, record: str) -> None: ips = self.lookup(Preferences.IP_LIST) diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index 593729f..a8f5cb2 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -290,7 +290,7 @@ class ConnectionManager: self.thread_man.set_cleanup_func(func) def _add_to_history_and_return(self) -> None: - self.controller.add_to_history(self.history) + self.controller.add_to_history(self.history, self.record) self.controller.open_page(NotebookPage.SERVERS) def _update_mods(self, raise_window: bool, menu_only: bool = False) -> None: diff --git a/dzgui/model/proxy_model.py b/dzgui/model/proxy_model.py index 9639789..378d7dc 100644 --- a/dzgui/model/proxy_model.py +++ b/dzgui/model/proxy_model.py @@ -85,8 +85,9 @@ class ProxyModelManager: if found is False: self.control_model.append(history) - if len(self.control_model) == 11: - del self.control_model[0] + + # if len(self.control_model) == 11: + # del self.control_model[0] self.filter(FilterMode.INITIAL, skip_cache=True) diff --git a/dzgui/model/servers.py b/dzgui/model/servers.py index ad75b15..9726b92 100644 --- a/dzgui/model/servers.py +++ b/dzgui/model/servers.py @@ -23,7 +23,7 @@ gi.require_version("Gtk", "3.0") from gi.repository import Gtk # noqa E402 if TYPE_CHECKING: - from dzgui.api.servers import A2SInfo + from dzgui.api.servers import A2SInfo, Record from dzgui.controllers.mc import Controller from dzgui.model.proxy_model import ProxyModelManager from dzgui.views.trees.tree_servers import ServerTreeView @@ -225,15 +225,12 @@ class ServerModelManager: ) = None, ) -> None: proxy_man = self._get_proxy_man() - config_man = self.controller.get_config_man() if rows is not None: records = rows else: control_model = proxy_man.get_control() records = control_model - config_man.update_history_file(records) - config_man.update_history_file(records) self._sort_unique_maps(records) proxy = proxy_man.get_proxy_model() self.tv.set_model(proxy) @@ -249,15 +246,20 @@ class ServerModelManager: self.emitter.emit("load_maps", store) # self.emitter.emit("servers_loaded_init") - def add_to_history(self, record: dict[str, Any]) -> None: + # TODO: dataclass for record rows; check for other dict annotations + def add_to_history(self, data: tuple[dict[str, Any], "Record"]) -> None: + row, record = data proxy_man = self._get_proxy_man() - rows = Servers.parse_json([record]) + rows = Servers.parse_json([row]) try: proxy_man.append_row_to_history(rows[0]) + self.update_history() except Exception: self.update_history(rows) - return - self.update_history() + + fqip = Servers.record_to_fqip(record) + config_man = self.controller.get_config_man() + config_man.update_history_file(fqip) def remove_from_history(self, record: Servers.Record) -> None: proxy_man = self._get_proxy_man()