mirror of
https://github.com/aclist/dztui.git
synced 2026-08-26 17:57:06 +02:00
fix: do not refilter on page map
This commit is contained in:
parent
5391cdde1e
commit
ae291eff41
@ -152,10 +152,7 @@ class Controller(GObject.GObject):
|
||||
self.prefs = prefs
|
||||
|
||||
def query_config(self, key: Preferences) -> str | bool | list:
|
||||
# return self.config_man.lookup(key)
|
||||
return self.config_man.lookup(key)
|
||||
# config = self.prefs.paths.config
|
||||
# return lookup(config, key)
|
||||
|
||||
def is_auto_install(self) -> bool:
|
||||
return self.query_config(Preferences.INSTALL)
|
||||
@ -288,32 +285,9 @@ class Controller(GObject.GObject):
|
||||
|
||||
def toggle_config(self, key: Preferences) -> None:
|
||||
self.config_man.toggle_config(key)
|
||||
# config = self.prefs.paths.config
|
||||
# try:
|
||||
# update.toggle_config(config, context)
|
||||
# # NOTE: 'use_miles' key is updated dynamically for statusbar unit
|
||||
# if context == Preferences.DIST:
|
||||
# self.prefs.use_miles = not self.prefs.use_miles
|
||||
# except Exception as e:
|
||||
# logger.critical(e)
|
||||
# trace = traceback.format_exc()
|
||||
# dialog = ExceptionDialog(self, trace)
|
||||
# dialog.run()
|
||||
|
||||
def update_config(self, key: Preferences, value: str) -> None:
|
||||
self.config_man.update_config(key, value)
|
||||
# try:
|
||||
# update.write_config(self.prefs.paths.config, key, value)
|
||||
# except Exception as e:
|
||||
# logger.critical(e)
|
||||
# trace = traceback.format_exc()
|
||||
# dialog = ExceptionDialog(self, trace)
|
||||
# dialog.run()
|
||||
# # TODO: suppress signals
|
||||
# # then reenable (or it spawns dialog twice)
|
||||
# # TODO: do this on demand for certain changes
|
||||
# self.mediator.grid.notebook.settings.populate_settings()
|
||||
# return
|
||||
|
||||
def open_keybindings(self) -> None:
|
||||
notebook = self.mediator.grid.notebook
|
||||
|
||||
@ -4,7 +4,6 @@ from typing import TYPE_CHECKING
|
||||
|
||||
from dzgui.const.enum import ContextMenu, Preferences
|
||||
from dzgui.managers.thread_man import ThreadingManager
|
||||
from dzgui.model.servers import ServerModelManager
|
||||
from dzgui.util import strings
|
||||
from dzgui.util.clip import copy_clipboard
|
||||
from dzgui.util.open_links import open_workshop_page
|
||||
@ -34,8 +33,9 @@ class ContextMenuManager:
|
||||
|
||||
def process(self, action: ContextMenu) -> None:
|
||||
match action:
|
||||
# NON THREADED
|
||||
# UNTHREADED
|
||||
case ContextMenu.ADD_NOTE:
|
||||
print("DEBUG: unimplemented")
|
||||
# spawn edit dialog and update cache, notes file
|
||||
pass
|
||||
case ContextMenu.COPY_LOG_CLIPBOARD:
|
||||
@ -66,19 +66,24 @@ class ContextMenuManager:
|
||||
self.controller.connect_by_record(record)
|
||||
|
||||
case ContextMenu.REFRESH_PLAYERS:
|
||||
print("DEBUG: unimplemented")
|
||||
# get record
|
||||
# call a2s on thread
|
||||
pass
|
||||
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
|
||||
case ContextMenu.REMOVE_SERVER:
|
||||
print("DEBUG: unimplemented")
|
||||
# reverse of ADD_SERVER
|
||||
pass
|
||||
case ContextMenu.SHOW_DETAILS:
|
||||
print("DEBUG: unimplemented")
|
||||
pass
|
||||
case ContextMenu.SHOW_MODS:
|
||||
print("DEBUG: unimplemented")
|
||||
pass
|
||||
|
||||
def copy_server_ip(self) -> None:
|
||||
|
||||
@ -44,7 +44,7 @@ class ProxyModelManager:
|
||||
def get_proxy_model(self) -> "FastInsertListStore":
|
||||
return self.proxy_model
|
||||
|
||||
def filter(self, mode: FilterMode, *args, **kwargs) -> None:
|
||||
def filter(self, mode: FilterMode) -> None:
|
||||
# TODO: proxy model can fetch args directly from filter man, no need to process extra input
|
||||
"""
|
||||
Native Gtk.TreeView.refilter() method was not performant enough
|
||||
|
||||
@ -133,7 +133,7 @@ class ServerModelManager:
|
||||
try:
|
||||
res = future.result(timeout=LAN_TIMEOUT)
|
||||
if res is not None and early_abort is True:
|
||||
# NOTE: first non-empty hit, flag pending threads to close
|
||||
# NOTE: on first non-empty hit, flag pending threads to close
|
||||
event.set()
|
||||
servers.append(res)
|
||||
self.thread_man.set_cleanup_func(
|
||||
@ -215,6 +215,7 @@ class ServerModelManager:
|
||||
return
|
||||
|
||||
records = Servers.parse_json([response])
|
||||
record = records[0]
|
||||
|
||||
proxy_man = self._get_proxy_man()
|
||||
raw_model = proxy_man.get_control()
|
||||
@ -223,21 +224,21 @@ class ServerModelManager:
|
||||
config_man = self.controller.get_config_man()
|
||||
config_man.add_saved_server(fqip)
|
||||
|
||||
# NOTE: if tab was not instantiated yet
|
||||
# NOTE: if tab contents were not loaded yet
|
||||
if raw_model is None:
|
||||
return
|
||||
|
||||
# NOTE: expected to only contain one item
|
||||
raw_model.append(records[0])
|
||||
raw_model.append(record)
|
||||
|
||||
# TODO: if all filters are already applied, strange behavior may occur
|
||||
# -> need to insert and reupdate tre per current filters
|
||||
# -> need to insert and reupdate tree per current filters
|
||||
# for example, non-empty will only show up in empty because it is not cached
|
||||
proxy_man.filter(FilterMode.INITIAL)
|
||||
|
||||
filter_man = self.tv.get_filter_man()
|
||||
old_maps = filter_man.get_unique_maps()
|
||||
cur_map = records[0][1]
|
||||
cur_map = record[1]
|
||||
if cur_map not in old_maps:
|
||||
self._set_new_maps([cur_map])
|
||||
self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_single_ip))
|
||||
|
||||
@ -544,7 +544,7 @@ connect_panel = ConnectPanel(
|
||||
connect="Connect",
|
||||
add="Add",
|
||||
add_con="Add/connect",
|
||||
placeholder="Enter IP or Battlemetrics ID",
|
||||
placeholder="Enter IP (IP:Query port) or Battlemetrics ID (numerical id)",
|
||||
entry_tooltip=(
|
||||
"- IP: format as IP:Query port\ne.g. 192.168.1.1:27016\n"
|
||||
"- Battlemetrics: numeric server ID\ne.g. 123456"
|
||||
|
||||
@ -212,6 +212,7 @@ class FilterPanel(Gtk.Box):
|
||||
|
||||
# TODO: use same sort of signal to reinitialize keyword and checks
|
||||
def _on_maps_loaded(self, emitter: "Emitter", store: Gtk.ListStore) -> None:
|
||||
self.is_first_run = True
|
||||
self.maps_combo.set_model(store)
|
||||
tv = self.controller.get_active_treeview()
|
||||
ind, name = tv.filter_man.get_active_map()
|
||||
@ -312,4 +313,9 @@ class FilterPanel(Gtk.Box):
|
||||
filter_man.set_prior_map(name)
|
||||
filter_man.set_active_map(ind, name)
|
||||
|
||||
# TODO: 2026-03-29
|
||||
# don't signal controller to refilter if we are switching pages
|
||||
if self.is_first_run:
|
||||
self.is_first_run = False
|
||||
return
|
||||
self.emitter.emit("map_selection_changed", name)
|
||||
|
||||
@ -166,6 +166,7 @@ class ServerTreeView(ContextMixin, TreeView):
|
||||
store = self.filter_man.get_map_store()
|
||||
|
||||
# FIXME: if model is none, wipe maps
|
||||
# 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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user