mirror of
https://github.com/aclist/dztui.git
synced 2026-08-25 17:32:36 +02:00
chore: dynamic statusbar WIP
This commit is contained in:
parent
0306cc4380
commit
936bc074a5
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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):
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -26,7 +26,7 @@ dependencies = [
|
||||
"packaging==25.0",
|
||||
"psutil==7.1.3",
|
||||
"python-a2s",
|
||||
"requests==2.32.5"
|
||||
"requests==2.32.5",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user