feat: statusbar substack WIP

This commit is contained in:
aclist committed 2026-01-19 16:15:26 +09:00
1 parent 495d6263bb
commit 3092e52515
4 files changed
+21 -6

No files matched your search

+4 -2
View File
@@ -421,8 +421,10 @@ class Controller:
total_mods, total_size = self.calc_mod_size() total_mods, total_size = self.calc_mod_size()
msg = format_mods(total_size, total_mods) msg = format_mods(total_size, total_mods)
# TODO: combine # TODO: combine
self.mediator.statusbar.set_text(msg) meta = self.mediator.statusbar.statusbar.get_context_id("Mods")
self.mediator.statusbar.spinner.stop() self.mediator.statusbar.statusbar.push(meta, msg)
#meta = self.mediator.statusbar.set_text(msg)
def calc_mod_size(self) -> tuple[int, int]: def calc_mod_size(self) -> tuple[int, int]:
model = self.model_man.get_mod_store() model = self.model_man.get_mod_store()
+2
View File
@@ -43,6 +43,8 @@ class Statusbar(Gtk.Grid):
if string is None: if string is None:
return return
meta = self.statusbar.get_context_id("Statusbar") meta = self.statusbar.get_context_id("Statusbar")
# TODO: substacks
# get_context_id(ServerTab)
self.statusbar.push(meta, string) self.statusbar.push(meta, string)
def refresh(self, row: "RowType") -> None: def refresh(self, row: "RowType") -> None:
+2 -1
View File
@@ -59,11 +59,12 @@ class ServerNotebook(Gtk.ScrolledWindow):
self.controller.toggle_server_panels(False) self.controller.toggle_server_panels(False)
def _on_keypress(self, widget: Self, event: Gdk.EventKey) -> None: def _on_keypress(self, widget: Self, event: Gdk.EventKey) -> None:
match event.keyval: match event.keyval:
case Gdk.KEY_n: case Gdk.KEY_n:
self.notebook.next_page() self.notebook.next_page()
case Gdk.KEY_p: case Gdk.KEY_p:
if event.state is Gdk.ModifierType.CONTROL_MASK:
return
self.notebook.prev_page() self.notebook.prev_page()
case _: case _:
return return
+13 -3
View File
@@ -46,7 +46,9 @@ class ServerTreeView(TreeView):
QUEUE_CHECK_DELAY = 200 QUEUE_CHECK_DELAY = 200
self.controller = controller
self.enum = enum self.enum = enum
self.loaded = False self.loaded = False
self.query_func: Callable = None self.query_func: Callable = None
@@ -56,7 +58,6 @@ class ServerTreeView(TreeView):
self.menu = Gtk.Menu() self.menu = Gtk.Menu()
self.menu.connect("key-press-event", self._on_key) self.menu.connect("key-press-event", self._on_key)
self.controller = controller
self.set_context_menu(menu) self.set_context_menu(menu)
self.set_fixed_height_mode(True) self.set_fixed_height_mode(True)
@@ -67,7 +68,6 @@ class ServerTreeView(TreeView):
prefs = self.controller.get_prefs() prefs = self.controller.get_prefs()
columns = prefs.paths.columns columns = prefs.paths.columns
try: try:
data = JSON.read_json(columns) data = JSON.read_json(columns)
valid_json = True valid_json = True
@@ -75,6 +75,7 @@ class ServerTreeView(TreeView):
logger.critical(e) logger.critical(e)
valid_json = False valid_json = False
# TODO: abstract
browser_cols = strings.browser_cols browser_cols = strings.browser_cols
for i, column_title in enumerate(browser_cols): for i, column_title in enumerate(browser_cols):
renderer = Gtk.CellRendererText() renderer = Gtk.CellRendererText()
@@ -114,7 +115,6 @@ class ServerTreeView(TreeView):
self.connect("generic_treesel_changed", self._parent_selection_changed) self.connect("generic_treesel_changed", self._parent_selection_changed)
self.connect("map", self._on_map) self.connect("map", self._on_map)
self.connect("unmap", self._on_unmap) self.connect("unmap", self._on_unmap)
self.connect("focus-in-event", self._on_kb_focus) self.connect("focus-in-event", self._on_kb_focus)
GLib.timeout_add(QUEUE_CHECK_DELAY, self._check_result_queue) GLib.timeout_add(QUEUE_CHECK_DELAY, self._check_result_queue)
@@ -149,6 +149,10 @@ class ServerTreeView(TreeView):
col.set_fixed_width(width) col.set_fixed_width(width)
def _on_kb_focus(self, a, b) -> None: 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") self.emit("on_distcalc_started")
def get_enum(self) -> None: def get_enum(self) -> None:
@@ -163,6 +167,7 @@ class ServerTreeView(TreeView):
self.controller.mediator.grid.conpan.lan.set_visible(False) self.controller.mediator.grid.conpan.lan.set_visible(False)
def _on_key(self, menu: Gtk.Menu, event: Gdk.EventKey) -> bool | None: def _on_key(self, menu: Gtk.Menu, event: Gdk.EventKey) -> bool | None:
# TODO: abstract as navigable context menu
if not is_navkey(event.keyval): if not is_navkey(event.keyval):
return False return False
sel = menu.get_selected_item() sel = menu.get_selected_item()
@@ -258,6 +263,11 @@ class ServerTreeView(TreeView):
case Gdk.KEY_i: case Gdk.KEY_i:
# TODO: # TODO:
self.controller.mediator.grid.conpan.add_panel.entry.grab_focus() 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: else:
match event.keyval: match event.keyval:
case Gdk.KEY_l | Gdk.KEY_Right: case Gdk.KEY_l | Gdk.KEY_Right: