fix: do not refilter on page map

This commit is contained in:
aclist committed 2026-03-29 19:50:09 +09:00
1 parent 5391cdde1e
commit ae291eff41
7 files changed
+22 -35

No files matched your search

-26
View File
@@ -152,10 +152,7 @@ class Controller(GObject.GObject):
self.prefs = prefs self.prefs = prefs
def query_config(self, key: Preferences) -> str | bool | list: def query_config(self, key: Preferences) -> str | bool | list:
# return self.config_man.lookup(key)
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: def is_auto_install(self) -> bool:
return self.query_config(Preferences.INSTALL) return self.query_config(Preferences.INSTALL)
@@ -288,32 +285,9 @@ class Controller(GObject.GObject):
def toggle_config(self, key: Preferences) -> None: def toggle_config(self, key: Preferences) -> None:
self.config_man.toggle_config(key) 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: def update_config(self, key: Preferences, value: str) -> None:
self.config_man.update_config(key, value) 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: def open_keybindings(self) -> None:
notebook = self.mediator.grid.notebook notebook = self.mediator.grid.notebook
+7 -2
View File
@@ -4,7 +4,6 @@ from typing import TYPE_CHECKING
from dzgui.const.enum import ContextMenu, Preferences from dzgui.const.enum import ContextMenu, Preferences
from dzgui.managers.thread_man import ThreadingManager from dzgui.managers.thread_man import ThreadingManager
from dzgui.model.servers import ServerModelManager
from dzgui.util import strings from dzgui.util import strings
from dzgui.util.clip import copy_clipboard from dzgui.util.clip import copy_clipboard
from dzgui.util.open_links import open_workshop_page from dzgui.util.open_links import open_workshop_page
@@ -34,8 +33,9 @@ class ContextMenuManager:
def process(self, action: ContextMenu) -> None: def process(self, action: ContextMenu) -> None:
match action: match action:
# NON THREADED # UNTHREADED
case ContextMenu.ADD_NOTE: case ContextMenu.ADD_NOTE:
print("DEBUG: unimplemented")
# spawn edit dialog and update cache, notes file # spawn edit dialog and update cache, notes file
pass pass
case ContextMenu.COPY_LOG_CLIPBOARD: case ContextMenu.COPY_LOG_CLIPBOARD:
@@ -66,19 +66,24 @@ class ContextMenuManager:
self.controller.connect_by_record(record) self.controller.connect_by_record(record)
case ContextMenu.REFRESH_PLAYERS: case ContextMenu.REFRESH_PLAYERS:
print("DEBUG: unimplemented")
# get record # get record
# call a2s on thread # call a2s on thread
pass pass
case ContextMenu.REMOVE_HISTORY: case ContextMenu.REMOVE_HISTORY:
print("DEBUG: unimplemented")
# update history model, update tab label, pop off of queue, write new list into file # update history model, update tab label, pop off of queue, write new list into file
# see dq.py # see dq.py
pass pass
case ContextMenu.REMOVE_SERVER: case ContextMenu.REMOVE_SERVER:
print("DEBUG: unimplemented")
# reverse of ADD_SERVER # reverse of ADD_SERVER
pass pass
case ContextMenu.SHOW_DETAILS: case ContextMenu.SHOW_DETAILS:
print("DEBUG: unimplemented")
pass pass
case ContextMenu.SHOW_MODS: case ContextMenu.SHOW_MODS:
print("DEBUG: unimplemented")
pass pass
def copy_server_ip(self) -> None: def copy_server_ip(self) -> None:
+1 -1
View File
@@ -44,7 +44,7 @@ class ProxyModelManager:
def get_proxy_model(self) -> "FastInsertListStore": def get_proxy_model(self) -> "FastInsertListStore":
return self.proxy_model 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 # 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 Native Gtk.TreeView.refilter() method was not performant enough
+6 -5
View File
@@ -133,7 +133,7 @@ class ServerModelManager:
try: try:
res = future.result(timeout=LAN_TIMEOUT) res = future.result(timeout=LAN_TIMEOUT)
if res is not None and early_abort is True: 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() event.set()
servers.append(res) servers.append(res)
self.thread_man.set_cleanup_func( self.thread_man.set_cleanup_func(
@@ -215,6 +215,7 @@ class ServerModelManager:
return return
records = Servers.parse_json([response]) records = Servers.parse_json([response])
record = records[0]
proxy_man = self._get_proxy_man() proxy_man = self._get_proxy_man()
raw_model = proxy_man.get_control() raw_model = proxy_man.get_control()
@@ -223,21 +224,21 @@ class ServerModelManager:
config_man = self.controller.get_config_man() config_man = self.controller.get_config_man()
config_man.add_saved_server(fqip) 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: if raw_model is None:
return return
# NOTE: expected to only contain one item # 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 # 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 # for example, non-empty will only show up in empty because it is not cached
proxy_man.filter(FilterMode.INITIAL) proxy_man.filter(FilterMode.INITIAL)
filter_man = self.tv.get_filter_man() filter_man = self.tv.get_filter_man()
old_maps = filter_man.get_unique_maps() old_maps = filter_man.get_unique_maps()
cur_map = records[0][1] cur_map = record[1]
if cur_map not in old_maps: if cur_map not in old_maps:
self._set_new_maps([cur_map]) self._set_new_maps([cur_map])
self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_single_ip)) self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_single_ip))
+1 -1
View File
@@ -544,7 +544,7 @@ connect_panel = ConnectPanel(
connect="Connect", connect="Connect",
add="Add", add="Add",
add_con="Add/connect", add_con="Add/connect",
placeholder="Enter IP or Battlemetrics ID", placeholder="Enter IP (IP:Query port) or Battlemetrics ID (numerical id)",
entry_tooltip=( entry_tooltip=(
"- IP: format as IP:Query port\ne.g. 192.168.1.1:27016\n" "- IP: format as IP:Query port\ne.g. 192.168.1.1:27016\n"
"- Battlemetrics: numeric server ID\ne.g. 123456" "- Battlemetrics: numeric server ID\ne.g. 123456"
+6
View File
@@ -212,6 +212,7 @@ class FilterPanel(Gtk.Box):
# TODO: use same sort of signal to reinitialize keyword and checks # TODO: use same sort of signal to reinitialize keyword and checks
def _on_maps_loaded(self, emitter: "Emitter", store: Gtk.ListStore) -> None: def _on_maps_loaded(self, emitter: "Emitter", store: Gtk.ListStore) -> None:
self.is_first_run = True
self.maps_combo.set_model(store) self.maps_combo.set_model(store)
tv = self.controller.get_active_treeview() tv = self.controller.get_active_treeview()
ind, name = tv.filter_man.get_active_map() 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_prior_map(name)
filter_man.set_active_map(ind, 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) self.emitter.emit("map_selection_changed", name)
+1
View File
@@ -166,6 +166,7 @@ class ServerTreeView(ContextMixin, TreeView):
store = self.filter_man.get_map_store() store = self.filter_man.get_map_store()
# FIXME: if model is none, wipe maps # FIXME: if model is none, wipe maps
# 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()