diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 09be8ca..367575c 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -380,6 +380,7 @@ class Controller(GObject.GObject): for future in futures: res = future.result() if res.status != 200 or not res.parsed: + # TODO: pop warning dialog self.push_data(None) return j = res.json @@ -600,13 +601,22 @@ class Controller(GObject.GObject): ) self.push_data(data) + def cleanup(self): + treeview = self.get_active_treeview() + context = self.get_active_context() + # TODO: rename signal + self.mediator.statusbar.emit("server_page_changed", context) + # TODO: may be superfluous + treeview.grab_focus() + self.destroy_on_idle() + def push_data(self, data: tuple, mode: FilterMode) -> None: - def cleanup(): - # TODO: rename signal - self.mediator.statusbar.emit("server_page_changed", context) - # TODO: may be superfluous - treeview.grab_focus() - self.destroy_on_idle() + #def cleanup(): + # # TODO: rename signal + # self.mediator.statusbar.emit("server_page_changed", context) + # # TODO: may be superfluous + # treeview.grab_focus() + # self.destroy_on_idle() treeview = self.get_active_treeview() context = self.get_active_context() @@ -618,11 +628,12 @@ class Controller(GObject.GObject): # TODO: consolidate into filter manager if mode == FilterMode.INITIAL: manager.set_control(data) + # TODO: init maps here manager.filter(mode) insert = manager.get_model() treeview.set_model(insert) treeview.set_loaded(True) - GLib.idle_add(cleanup) + GLib.idle_add(self.cleanup) @call_on_thread def highlight_stale(self) -> None: @@ -754,19 +765,19 @@ class Controller(GObject.GObject): @call_on_thread def filter_threaded(self, mode: FilterMode, label: str) -> None: - print(mode) tv = self.get_active_treeview() tv.filter_man.filter(mode, label) self.push_data("", mode) def refilter_model(self, mode: FilterMode, label: str) -> None: - print(mode) tv = self.get_active_treeview() + # TODO: shouldn't empty model be None? + if len(tv.get_model()) == 0: + return tv.set_model(None) self.set_callback(None, None) self.filter_threaded(mode, label) - def populate_model(self) -> None: treeview = self.get_active_treeview() if treeview.get_loaded() is True: @@ -823,6 +834,7 @@ class Controller(GObject.GObject): self.mediator.grid.conpan.set_visible(state) # TODO: use model manager, map and keyword caches + # TODO: model cache that hooks checkbox signal def get_filters(self) -> list: return self.mediator.filters.get_filters() diff --git a/dzgui/model/filtered_model.py b/dzgui/model/filtered_model.py index f15a77e..0f649fd 100644 --- a/dzgui/model/filtered_model.py +++ b/dzgui/model/filtered_model.py @@ -77,9 +77,6 @@ class FilteredModelManager: cache = self.filter_cache[filters] self.set_model(cache[0]) self.set_filtered(cache[1]) - # GLib.idle_add( - # self.controller.mediator.get_active_treeview()._filter_cleanup - # ) return match mode: @@ -242,7 +239,6 @@ class FilteredModelManager: refiltered = self.filter_toggle_on(filters) self.set_filtered(refiltered) self.set_success(True) - GLib.idle_add(self.controller.mediator.get_active_treeview()._filter_cleanup) def convert_model_to_list(self, model: ListStore) -> list: return [[el for el in row] for row in model] diff --git a/dzgui/views/components/filter_panel.py b/dzgui/views/components/filter_panel.py index 5c07755..86ed068 100644 --- a/dzgui/views/components/filter_panel.py +++ b/dzgui/views/components/filter_panel.py @@ -228,8 +228,7 @@ class FilterPanel(Gtk.Box): return logger.info(f"User filtered by keyword '{keyword}'") self.keyword_filter = keyword - treeview = self.controller.get_active_treeview() - treeview.filter(FilterMode.KEYWORD, keyword) + self.controller.refilter_model(FilterMode.KEYWORD, keyword) def _on_button_release(self, window, button) -> Literal[True]: return True diff --git a/dzgui/views/trees/tree_servers.py b/dzgui/views/trees/tree_servers.py index 50e0565..a518b94 100644 --- a/dzgui/views/trees/tree_servers.py +++ b/dzgui/views/trees/tree_servers.py @@ -385,6 +385,7 @@ class ServerTreeView(TreeView): except Exception: return if row_index >= start[0] <= end[0]: - real_model = self.filter_man.get_real_model() + # NOTE: fetch raw data rows + real_model = self.filter_man.get_control() value = real_model[row_index][col_index] cell.set_property("text", str(value)) diff --git a/pyproject.toml b/pyproject.toml index 17dfca4..5694ed6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ build-backend = "setuptools.build_meta" [tool.ruff] line-length = 88 indent-width = 4 -extend-exclude = ["tree_servers.py", "tree_server_mods.py", "dialogs", "right_panel.py", "filter_panel.py", "base.py", "*lib/a2s", "dist.py"] +extend-exclude = ["tree_server_mods.py", "dialogs", "*lib/a2s"] lint.unfixable = ["F401"] [tool.ruff.format]