chore: dynamic statusbar WIP

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

No files matched your search

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