mirror of
https://github.com/aclist/dztui.git
synced 2026-10-31 07:02:50 +01:00
fix: do not refilter on page map
This commit is contained in:
1 parent
5391cdde1e
commit
ae291eff41
7 files changed
+22
-35
No files matched your search
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -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()
|
||||||
|
|||||||
Reference in new issue
Block a user