chore: dynamic statusbar WIP

This commit is contained in:
aclist 2026-01-22 19:41:41 +09:00
parent 0306cc4380
commit 936bc074a5
8 changed files with 39 additions and 35 deletions

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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):

View File

@ -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:

View File

@ -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:

View File

@ -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)

View File

@ -26,7 +26,7 @@ dependencies = [
"packaging==25.0",
"psutil==7.1.3",
"python-a2s",
"requests==2.32.5"
"requests==2.32.5",
]
[project.scripts]