From 83a79961891b471690a96fc30bb6b2551c01c5b5 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:39:49 +0900 Subject: [PATCH 1/3] The filter panel previously did not pack filter labels homogeneously, so the width of the "Unofficial" label was being manually constrained by abbreviating it. Labels auto ellipsize and adjust now, so the full name is used. The filter file check is also allowed to fail if the user's filter preferences file contains old key names. --- dzgui/util/strings.py | 2 +- dzgui/views/components/filter_panel.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/dzgui/util/strings.py b/dzgui/util/strings.py index bc6904c..dad40fa 100644 --- a/dzgui/util/strings.py +++ b/dzgui/util/strings.py @@ -181,7 +181,7 @@ filter_lowpop = "Low pop" filter_nonascii = "Non-ASCII" filter_duplicate = "Duplicate" filter_official = "Official" -filter_unofficial = "Unoffic." +filter_unofficial = "Unofficial" filter_modded = "Modded" # maps diff --git a/dzgui/views/components/filter_panel.py b/dzgui/views/components/filter_panel.py index 26f4974..7d7310e 100644 --- a/dzgui/views/components/filter_panel.py +++ b/dzgui/views/components/filter_panel.py @@ -333,6 +333,9 @@ class FilterPanel(Gtk.Box): self.emitter.emit("map_selection_changed", name) def set_filters(self, filters: dict[str, bool]) -> None: - for check in self.button_grid.checks: - label = check.get_label() - check.set_active(filters[label]) + try: + for check in self.button_grid.checks: + label = check.get_label() + check.set_active(filters[label]) + except Exception as e: + logger.warning(e) From 2419fedd19f4f4497dacbc8f39233d1b0ac7f4f9 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:50:32 +0900 Subject: [PATCH 2/3] chore: format exceptions with type --- dzgui/api/servers.py | 5 ++++- dzgui/managers/connection.py | 3 +-- dzgui/util/format.py | 4 ++++ dzgui/views/components/filter_panel.py | 4 +++- dzgui/views/dialogs/boot.py | 4 ++-- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/dzgui/api/servers.py b/dzgui/api/servers.py index fce937b..568cdf8 100644 --- a/dzgui/api/servers.py +++ b/dzgui/api/servers.py @@ -14,6 +14,7 @@ from typing import Any, Optional, TYPE_CHECKING, Union from dzgui.api.bm import map_id_to_record from dzgui.const.constants import APP_NAME, REQUEST_TIMEOUT from dzgui.const.endpoints import STEAM_SERVERS +from dzgui.util.format import format_exception from dzgui.util import strings import a2s @@ -273,7 +274,9 @@ def source_info_to_dict(ip: str, qport: int, info: "SourceInfo") -> dict[str, An return res except Exception as e: # TODO: generalized function - logger.critical(f"{type(e).__name__}: {e} ({ip}:{qport})") + msg = format_exception(e) + msg += f" ({ip}:{qport})" + logger.critical(msg) raise e diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index 9fefb74..7570dfd 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -238,8 +238,7 @@ class ConnectionManager: def query_modlist_and_present(self, record: Servers.Record) -> None: try: mods = self._query_modlist(record) - except Exception as e: - print(f"{type(e).__name__}: {e}") + except Exception: self.thread_man.set_cleanup_func( StoredFunc(self._server_timeout), destroy_first=True ) diff --git a/dzgui/util/format.py b/dzgui/util/format.py index 871e9a7..d5420cb 100644 --- a/dzgui/util/format.py +++ b/dzgui/util/format.py @@ -83,3 +83,7 @@ def format_player_count(model: Gtk.TreeModel | None, control: list) -> str: def embolden(text: str) -> str: return f"{text}" + + +def format_exception(e: Exception) -> str: + return f"{type(e).__name__}: {e}" diff --git a/dzgui/views/components/filter_panel.py b/dzgui/views/components/filter_panel.py index 7d7310e..c79ee0c 100644 --- a/dzgui/views/components/filter_panel.py +++ b/dzgui/views/components/filter_panel.py @@ -11,6 +11,7 @@ from dzgui.const.constants import ( ) from dzgui.const.enum import FilterMode from dzgui.model.servers import ServerModelManager +from dzgui.util.format import format_exception from dzgui.util.strings import all_maps from dzgui.views.components.maps_combo import MapsCombo from dzgui.views.components.labels import BoldLabel @@ -338,4 +339,5 @@ class FilterPanel(Gtk.Box): label = check.get_label() check.set_active(filters[label]) except Exception as e: - logger.warning(e) + msg = format_exception(e) + logger.warning(msg) diff --git a/dzgui/views/dialogs/boot.py b/dzgui/views/dialogs/boot.py index 974239b..4dc5821 100644 --- a/dzgui/views/dialogs/boot.py +++ b/dzgui/views/dialogs/boot.py @@ -14,6 +14,7 @@ from dzgui.init.update import check_updates from dzgui.const.constants import EXPAND, FILL from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager from dzgui.strings import preboot +from dzgui.util.format import format_exception from dzgui.util.strings import dialog_header from dzgui.util.symlink import rebuild_symlinks from dzgui.views.components.buttons import ClipboardButton @@ -175,8 +176,7 @@ class BootDialog(Gtk.Dialog): self.thread_man.set_cleanup_func(callback) except Exception as e: self.failed = True - # TODO: generic exception wrapper - self.exception = f"{type(e).__name__}: {e}" + self.exception = format_exception(e) callback = StoredFunc(self.update_status, Success.FAIL) self.thread_man.set_cleanup_func(callback) From 9191f43c8e79635eceb53fc57ee1769640763270 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:50:53 +0900 Subject: [PATCH 3/3] chore: drop comment --- dzgui/api/servers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dzgui/api/servers.py b/dzgui/api/servers.py index 568cdf8..60f364f 100644 --- a/dzgui/api/servers.py +++ b/dzgui/api/servers.py @@ -273,7 +273,6 @@ def source_info_to_dict(ip: str, qport: int, info: "SourceInfo") -> dict[str, An res["ping"] = ping return res except Exception as e: - # TODO: generalized function msg = format_exception(e) msg += f" ({ip}:{qport})" logger.critical(msg)