diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 376bdb5..ad298c2 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -421,8 +421,10 @@ class Controller: total_mods, total_size = self.calc_mod_size() msg = format_mods(total_size, total_mods) # TODO: combine - self.mediator.statusbar.set_text(msg) - self.mediator.statusbar.spinner.stop() + meta = self.mediator.statusbar.statusbar.get_context_id("Mods") + self.mediator.statusbar.statusbar.push(meta, msg) + #meta = self.mediator.statusbar.set_text(msg) + def calc_mod_size(self) -> tuple[int, int]: model = self.model_man.get_mod_store() diff --git a/dzgui/views/components/statusbar.py b/dzgui/views/components/statusbar.py index 914bfb7..47a52ff 100644 --- a/dzgui/views/components/statusbar.py +++ b/dzgui/views/components/statusbar.py @@ -43,6 +43,8 @@ class Statusbar(Gtk.Grid): if string is None: return meta = self.statusbar.get_context_id("Statusbar") + # TODO: substacks + # get_context_id(ServerTab) self.statusbar.push(meta, string) def refresh(self, row: "RowType") -> None: diff --git a/dzgui/views/pages/servers.py b/dzgui/views/pages/servers.py index 71a2b54..e96f10f 100644 --- a/dzgui/views/pages/servers.py +++ b/dzgui/views/pages/servers.py @@ -59,11 +59,12 @@ class ServerNotebook(Gtk.ScrolledWindow): self.controller.toggle_server_panels(False) def _on_keypress(self, widget: Self, event: Gdk.EventKey) -> None: - match event.keyval: case Gdk.KEY_n: self.notebook.next_page() case Gdk.KEY_p: + if event.state is Gdk.ModifierType.CONTROL_MASK: + return self.notebook.prev_page() case _: return diff --git a/dzgui/views/trees/tree_servers.py b/dzgui/views/trees/tree_servers.py index 9eaecfb..16d499a 100644 --- a/dzgui/views/trees/tree_servers.py +++ b/dzgui/views/trees/tree_servers.py @@ -46,7 +46,9 @@ class ServerTreeView(TreeView): QUEUE_CHECK_DELAY = 200 + self.controller = controller self.enum = enum + self.loaded = False self.query_func: Callable = None @@ -56,7 +58,6 @@ class ServerTreeView(TreeView): self.menu = Gtk.Menu() self.menu.connect("key-press-event", self._on_key) - self.controller = controller self.set_context_menu(menu) self.set_fixed_height_mode(True) @@ -67,7 +68,6 @@ class ServerTreeView(TreeView): prefs = self.controller.get_prefs() columns = prefs.paths.columns - try: data = JSON.read_json(columns) valid_json = True @@ -75,6 +75,7 @@ class ServerTreeView(TreeView): logger.critical(e) valid_json = False + # TODO: abstract browser_cols = strings.browser_cols for i, column_title in enumerate(browser_cols): renderer = Gtk.CellRendererText() @@ -114,7 +115,6 @@ class ServerTreeView(TreeView): self.connect("generic_treesel_changed", self._parent_selection_changed) self.connect("map", self._on_map) self.connect("unmap", self._on_unmap) - self.connect("focus-in-event", self._on_kb_focus) GLib.timeout_add(QUEUE_CHECK_DELAY, self._check_result_queue) @@ -149,6 +149,10 @@ class ServerTreeView(TreeView): col.set_fixed_width(width) def _on_kb_focus(self, a, b) -> None: + # TODO: may generate superfluous calc events when page changed but selection is the same + # this can probably be dropped in favor of statusbar cache system + # meta = self.controller.mediator.statusbar.statusbar.get_context_id("Mods") + # self.controller.mediator.statusbar.statusbar.pop(meta) self.emit("on_distcalc_started") def get_enum(self) -> None: @@ -163,6 +167,7 @@ class ServerTreeView(TreeView): self.controller.mediator.grid.conpan.lan.set_visible(False) def _on_key(self, menu: Gtk.Menu, event: Gdk.EventKey) -> bool | None: + # TODO: abstract as navigable context menu if not is_navkey(event.keyval): return False sel = menu.get_selected_item() @@ -258,6 +263,11 @@ class ServerTreeView(TreeView): case Gdk.KEY_i: # TODO: self.controller.mediator.grid.conpan.add_panel.entry.grab_focus() + case Gdk.KEY_p: + if self.enum is ServerTab.LAN: + self.controller.mediator.grid.conpan.lan.entry.grab_focus() + case Gdk.KEY_c: + print("copy to clipboard") else: match event.keyval: case Gdk.KEY_l | Gdk.KEY_Right: