feat: remove history entries (WIP)

This commit is contained in:
aclist 2026-04-25 20:30:15 +09:00
parent 6b50b1e933
commit 4bccaec427
5 changed files with 56 additions and 4 deletions

View File

@ -597,6 +597,10 @@ class Controller(GObject.GObject):
saved_tree = self.get_servers().get_saved()
ServerModelManager(self, saved_tree).remove_by_record(record)
def remove_from_history(self, record: "Record") -> None:
tv = self.get_active_treeview()
ServerModelManager(self, tv).remove_from_history(record)
def connect_by_str(self, addr: str) -> None:
if addr.isdigit():
config_man = self.get_config_man()

View File

@ -48,6 +48,10 @@ class ConfigManager:
ips.append(record)
self.update_config(Preferences.IP_LIST, ips)
def remove_history_server(self, record: str) -> None:
print(record)
pass
def remove_saved_server(self, record: str) -> None:
ips = self.lookup(Preferences.IP_LIST)
ips.remove(record)

View File

@ -68,10 +68,8 @@ class ContextMenuManager:
record = self.treeview.get_record()
self.controller.refresh_players(record)
case ContextMenu.REMOVE_HISTORY:
print("DEBUG: unimplemented")
# update history model, update tab label, pop off of queue, write new list into file
# see dq.py
pass
record = self.treeview.get_record()
self.controller.remove_from_history(record)
case ContextMenu.REMOVE_SERVER:
record = self.treeview.get_record()
self.controller.remove_by_record(record)

View File

@ -1,5 +1,6 @@
import re
from collections import deque
from typing import Any, Optional, TYPE_CHECKING
from warnings import deprecated
@ -51,6 +52,7 @@ class ProxyModelManager:
for record in self.control_model:
if row[7] == record[7] and row[8] == record[8]:
self.control_model.remove(record)
break
self.wipe_cache()
self.filter(FilterMode.INITIAL, skip_cache=True)
@ -59,6 +61,23 @@ class ProxyModelManager:
self.proxy_model[treeiter][4] = playercount.players
self.proxy_model[treeiter][6] = playercount.queue
# def append_to_history(self, row: list) -> None:
# if len(self.control_model) == 10:
# del self.control_model[0]
# self.control_model.append(row)
# TODO: consolidate with remove_row_from_control()
def remove_from_history(self, record: "Record") -> None:
print(record)
addr = f"{record.ip}:{record.gameport}"
qport = record.qport
for record in self.control_model:
if addr == record[7] and qport == record[8]:
self.control_model.remove(record)
break
self.wipe_cache()
self.filter(FilterMode.INITIAL, skip_cache=True)
def clear_proxy_model(self) -> None:
self.proxy_model.clear()

View File

@ -211,6 +211,33 @@ class ServerModelManager:
res = Servers.query_by_record(record)
self._parse_single_record(res, delete=True)
def remove_from_history(self, record: Servers.Record) -> None:
"""Fully unthreaded, just removes a row"""
port = record.ip
gport = record.gameport
qport = record.qport
fqip = f"{port}:{gport}:{qport}"
config_man = self.controller.get_config_man()
config_man.remove_history_server(fqip)
proxy_man = self._get_proxy_man()
proxy_man.remove_from_history(record)
control_model = proxy_man.get_control()
self._sort_unique_maps(control_model)
proxy = proxy_man.get_proxy_model()
self.tv.set_model(proxy)
self.emitter.emit("servers_loaded", self.enum)
filter_man = self.tv.get_filter_man()
maps = self._get_new_maps()
filter_man.set_unique_maps(maps)
self.first_iteration = False
self.emitter.emit("servers_loaded_init")
def add_by_str(self, addr: str) -> None:
if addr.isdigit():
self.add_by_id(addr)