diff --git a/dzgui/model/proxy_model.py b/dzgui/model/proxy_model.py index c92b4cc..4e41e20 100644 --- a/dzgui/model/proxy_model.py +++ b/dzgui/model/proxy_model.py @@ -1,6 +1,6 @@ import re -from typing import Any, Optional, TYPE_CHECKING, Union +from typing import Any, TYPE_CHECKING, Union from warnings import deprecated from dzgui.const.enum import FilterMode @@ -14,7 +14,6 @@ if TYPE_CHECKING: from dzgui.model.servers import NewPlayerCount -# TODO: annotate list contents (list[list[Any]]) class ProxyModelManager: """ Manages access to cached FastInsertListStore resources and @@ -35,9 +34,13 @@ class ProxyModelManager: self.proxy_model: "FastInsertListStore" self.filter_man = filter_man - # TODO: list typehints - self.control_model: list | None = None - self.filtered: list = [] + self.control_model: ( + list[tuple[str, str, str, str, int, int, int, str, int, int, str, bool]] + | None + ) = None + self.filtered: list[ + tuple[str, str, str, str, int, int, int, str, int, int, str, bool] + ] = [] self.success = True def has_control_model(self) -> bool: @@ -48,7 +51,9 @@ class ProxyModelManager: def append_row(self, row: list) -> None: self.proxy_model.append(row) - def append_row_to_control(self, row: list) -> None: + def append_row_to_control( + self, row: tuple[str, str, str, str, int, int, int, str, int, int, str, bool] + ) -> None: if self.control_model is None: raise AttributeError("Trying to add rows to a non-existent model") self.control_model.append(row) diff --git a/dzgui/model/servers.py b/dzgui/model/servers.py index 154c90a..c2f4837 100644 --- a/dzgui/model/servers.py +++ b/dzgui/model/servers.py @@ -60,6 +60,7 @@ class ServerModelManager: There may be cases where you want to instantiate this class without dumping servers, e.g., adding saved servers from another tab """ + self.first_iteration = True match self.enum: case ServerTab.BROWSER: @@ -92,12 +93,10 @@ class ServerModelManager: futures = [executor.submit(job, key, APPID_DAYZ, param) for param in params] for future in as_completed(futures): try: - # NOTE: faciliates early aborting via sigint # TODO: make this logic available to all dump contexts if self.controller.get_exit_event().is_set(): return - self.thread_man.increment_dialog() res = future.result(timeout=API_TIMEOUT) if res.status != 200 or not res.parsed: @@ -236,7 +235,6 @@ class ServerModelManager: def add_to_history(self, record: dict[str, Any]) -> None: proxy_man = self._get_proxy_man() row = Servers.parse_json([record]) - print(type(row[0])) proxy_man.append_row_to_history(row[0]) self.update_history() @@ -285,7 +283,7 @@ class ServerModelManager: proxy_man = self._get_proxy_man() config_man = self.controller.get_config_man() fqip = Servers.response_to_fqip(row) - record = response.get_record() # Servers.response_to_record(row) + record = response.get_record() # TODO: less convoluted if delete: @@ -394,7 +392,8 @@ class ServerModelManager: # TODO: distinguish signals, e.g. "servers_failed_to_load", "servers_loaded_empty" # customize statusbar and dialog accordingly - self.emitter.emit("servers_loaded", self.enum) + # TODO: drop, causes errors + # self.emitter.emit("servers_loaded", self.enum) # FIXME: destroy wait dialog first # see threadman.set_cleanup_func(_, destroy_first=True) if show_dialog: diff --git a/dzgui/views/components/filter_panel.py b/dzgui/views/components/filter_panel.py index 222c61d..eba6735 100644 --- a/dzgui/views/components/filter_panel.py +++ b/dzgui/views/components/filter_panel.py @@ -45,7 +45,7 @@ class ButtonGrid(Gtk.Grid): checkbox = Gtk.CheckButton(label=check) label = checkbox.get_child() if label is not None: - label.set_ellipsize(Pango.EllipsizeMode.END) # type: ignore + label.set_ellipsize(Pango.EllipsizeMode.END) # type: ignore if defaults[check]: checkbox.set_active(True) @@ -188,6 +188,7 @@ class FilterPanel(Gtk.Box): self.maps_entry: Gtk.Entry = self.maps_combo.get_child() # type: ignore self.maps_entry.set_completion(completion) + # TODO: strings self.maps_entry.set_placeholder_text("Filter by map") self.maps_entry.connect("changed", self._on_map_completion, True) self.maps_entry.connect("key-press-event", self._on_map_entry_keypress) diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index 1cfdd1c..4e35801 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -28,7 +28,6 @@ from dzgui.views.components.eventbox import InfoEventBox from dzgui.views.components.buttons import WebButton from dzgui.views.components.frame import HeadingFrame from dzgui.views.dialogs.generic import ExceptionDialog -from dzgui.views.dialogs.link_dialog import WorkshopLinkDialog import gi diff --git a/dzgui/views/trees/tree_servers.py b/dzgui/views/trees/tree_servers.py index 8020506..57220bd 100644 --- a/dzgui/views/trees/tree_servers.py +++ b/dzgui/views/trees/tree_servers.py @@ -78,8 +78,8 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore "IP": 240, } - # TODO: abstract - # FIXME: resize col width func causes snapping behavior + # TODO: abstract column population logic + # TODO: resize col width func causes snapping behavior browser_cols = strings.browser_cols for i, column_title in enumerate(browser_cols): renderer = Gtk.CellRendererText()