diff --git a/CHANGELOG.md b/CHANGELOG.md index 053e26e..8e1750f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ - Integrated server notebook - Retain position on servers - Propagate width changes to all tables +- Remember tree position in menus ## Changed - Reduce padding on keys button diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 7acdf4c..b66bbd7 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -374,12 +374,12 @@ class Controller: # TODO: set crumbs by signal self.set_crumbs(button.get_label()) - def get_help_text(self) -> str: + def get_help_row(self) -> str: tv = self.mediator.menu model = self.get_help_store() tree_iter = tv.get_focused_row_iter() - value = model.get_value(tree_iter, 0) - return value + value = model.get_value(tree_iter, 1) + return value.dict["tooltip"] def open_user_workshop(self, uid: str) -> None: # NOTE: uid may contain leading zeroes, not a real integer @@ -719,28 +719,24 @@ class Controller: def populate_model(self) -> None: treeview = self.get_active_treeview() - if treeview.get_loaded() is False: - # NOTE: cf. set_query_func() - func = treeview.get_query_func() - if func is not None: - manager = treeview.get_filter_man() - # TODO: this may lag? - manager.clear_model() - self.set_callback(None, None) - self.call_on_thread(func) + if treeview.get_loaded() is True: + self.mediator.statusbar.emit("server_page_changed", treeview.get_enum()) + return + + func = treeview.get_query_func() + if func is None: + self.mediator.statusbar.emit("server_page_changed", treeview.get_enum()) + return + manager = treeview.get_filter_man() + # TODO: this may lag? + manager.clear_model() + self.set_callback(None, None) + self.call_on_thread(func) + def focus_button_box(self) -> None: self.mediator.right_panel.focus_button_box() - def present_servers(self) -> None: - treeview = self.get_active_treeview() - context = treeview.get_enum() - - self.mediator.statusbar.emit("server_page_changed", context) - # TODO: signal for crumbs - crumbs = self.mediator.servers.get_cached_label() - self.set_crumbs(crumbs) - def toggle_check(self, event: Gdk.EventKey) -> None | Literal[False]: mappings = { Gdk.KEY_1: 0, diff --git a/dzgui/data/CHANGELOG.md b/dzgui/data/CHANGELOG.md index 053e26e..8e1750f 100644 --- a/dzgui/data/CHANGELOG.md +++ b/dzgui/data/CHANGELOG.md @@ -21,6 +21,7 @@ - Integrated server notebook - Retain position on servers - Propagate width changes to all tables +- Remember tree position in menus ## Changed - Reduce padding on keys button diff --git a/dzgui/views/base.py b/dzgui/views/base.py index af8134e..156be48 100644 --- a/dzgui/views/base.py +++ b/dzgui/views/base.py @@ -314,8 +314,8 @@ class Notebook(ScrollableMixin, Gtk.Notebook): # type: ignore MainController.mediator.statusbar.emit("notebook_page_changed", enum) self.is_return = False - if enum is NotebookPage.SERVERS: - MainController.present_servers() + #if enum is NotebookPage.SERVERS: + # MainController.present_servers() class Grid(Gtk.Grid): diff --git a/dzgui/views/components/statusbar.py b/dzgui/views/components/statusbar.py index 511e24b..2115e76 100644 --- a/dzgui/views/components/statusbar.py +++ b/dzgui/views/components/statusbar.py @@ -2,7 +2,6 @@ from warnings import deprecated from typing import Self, Union, TYPE_CHECKING from dzgui.const.enum import NotebookPage, RowType -from dzgui.util import strings import gi @@ -29,13 +28,10 @@ class Statusbar(Gtk.Grid): self.controller = controller self.controller.register_widget("statusbar", self) - help_text = strings.statusbar_helptext - self.playercount = "" self.statusbar = Gtk.Statusbar() self.spinner = Gtk.Spinner() - self.spinner.start() version = self.controller.get_prefs().version self.status_right_label = Gtk.Label( @@ -48,7 +44,6 @@ class Statusbar(Gtk.Grid): self.status_right_label, self.spinner, Gtk.PositionType.RIGHT, 3, 1 ) - self.set_text(help_text, "Help") self.players = "" self.connect("server_row_changed", self._on_server_row_changed) @@ -60,6 +55,9 @@ class Statusbar(Gtk.Grid): def _on_notebook_page_changed( self, statusbar: Self, context: "NotebookPage" ) -> None: + if self.controller.loaded is False: + return + status = context.dict["statusbar"] bar = "" if status is False: @@ -70,9 +68,13 @@ class Statusbar(Gtk.Grid): case NotebookPage.MODS: bar = self.controller.format_mod_statusbar() case NotebookPage.HELP: - bar = self.controller.get_help_text() + bar = self.controller.get_help_row() case NotebookPage.SERVERS: - pass + # TODO: + from dzgui.const.enum import ServerTab + + self.emit("server_page_changed", ServerTab.BROWSER) + return self.set_by_context(context, bar) @@ -98,10 +100,10 @@ class Statusbar(Gtk.Grid): self.set_by_context(context, pretty) def _on_server_page_changed(self, statusbar: Self, context: "ServerTab") -> None: - c = self.controller.get_player_count() - self.playercount = c + count = self.controller.get_player_count() + self.playercount = count - self.set_by_context(context, c) + self.set_by_context(context, count) tree = self.controller.get_active_treeview() tree.emit("distcalc_started") @@ -132,7 +134,9 @@ class Statusbar(Gtk.Grid): self.statusbar.push(meta, string) self.set_cache(string) + @deprecated("use set_by_context()") def refresh(self, row: "RowType") -> None: + # FIXME: brittle if row is None: formatted = "" else: diff --git a/dzgui/views/pages/servers.py b/dzgui/views/pages/servers.py index 617934f..781ddaa 100644 --- a/dzgui/views/pages/servers.py +++ b/dzgui/views/pages/servers.py @@ -101,7 +101,7 @@ class ServerNotebook(Gtk.ScrolledWindow): self.notebook.set_tab_label_text(child, text) self.set_crumbs(text) - self.controller.present_servers() + #self.controller.present_servers() self.controller.populate_model() def set_cached_label(self, label: str) -> None: diff --git a/dzgui/views/trees/tree_menu.py b/dzgui/views/trees/tree_menu.py index de0b132..9629c44 100644 --- a/dzgui/views/trees/tree_menu.py +++ b/dzgui/views/trees/tree_menu.py @@ -76,4 +76,6 @@ class MenuTreeView(TreeView): row = self.get_value_at_index(1) if row == "": return + if self.controller.loaded is False: + return self.controller.set_statusbar_by_row(row) diff --git a/pyproject.toml b/pyproject.toml index 6f6ef5f..9864d41 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "packaging==25.0", "psutil==7.1.3", "python-a2s", - "requests==2.32.5" + "requests==2.32.5", ] [project.scripts]