mirror of
https://github.com/aclist/dztui.git
synced 2026-11-06 18:10:58 +01:00
feat: dedicated emitter
This commit is contained in:
1 parent
ea841395fc
commit
ac7700ec23
24 files changed
+207
-112
No files matched your search
@@ -4,11 +4,13 @@ from dzgui.const.enum import ButtonType
|
||||
from dzgui.const.constants import NO_EXPAND, NO_FILL, NO_PADDING
|
||||
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk # noqa E402
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ContextualButton(Gtk.Button):
|
||||
def __init__(self, label, opens, tooltip, context):
|
||||
super().__init__(
|
||||
@@ -20,6 +22,7 @@ class ContextualButton(Gtk.Button):
|
||||
self.context = context
|
||||
self.opens = opens
|
||||
|
||||
|
||||
class ButtonBox(Gtk.Box):
|
||||
def __init__(self, controller) -> None:
|
||||
super().__init__(
|
||||
@@ -41,7 +44,7 @@ class ButtonBox(Gtk.Box):
|
||||
opens=side_button.dict["opens"],
|
||||
tooltip=side_button.dict["tooltip"],
|
||||
context=side_button,
|
||||
)
|
||||
)
|
||||
|
||||
# FIXME: if debug log fails to load, still opens table
|
||||
size = (10, 10) if prefs.is_steam_deck else (50, 50)
|
||||
@@ -52,7 +55,6 @@ class ButtonBox(Gtk.Box):
|
||||
button.connect("clicked", self._on_selection_button_clicked)
|
||||
self.pack_start(button, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
|
||||
|
||||
def _on_selection_button_clicked(self, button: Gtk.Button) -> None:
|
||||
self.controller.open_page_by_button(button)
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
from dzgui.controllers.emitter import Emitter
|
||||
|
||||
|
||||
class FilterPanel(Gtk.Box):
|
||||
@@ -94,6 +95,7 @@ class FilterPanel(Gtk.Box):
|
||||
self.emitter.connect(
|
||||
"request_maps_focus", lambda _: self.maps_entry.grab_focus()
|
||||
)
|
||||
self.emitter.connect("check_button_pressed", self.toggle_check_by_key)
|
||||
|
||||
completion = Gtk.EntryCompletion(inline_completion=True)
|
||||
completion.set_text_column(0)
|
||||
@@ -251,6 +253,26 @@ class FilterPanel(Gtk.Box):
|
||||
def set_active_combo(self, row: int) -> None:
|
||||
self.maps_combo.set_active(row)
|
||||
|
||||
def toggle_check_by_key(self, emitter: "Emitter", keyval: int) -> None | Literal[False]:
|
||||
mappings = {
|
||||
Gdk.KEY_1: 0,
|
||||
Gdk.KEY_2: 1,
|
||||
Gdk.KEY_3: 2,
|
||||
Gdk.KEY_4: 3,
|
||||
Gdk.KEY_5: 4,
|
||||
Gdk.KEY_6: 5,
|
||||
Gdk.KEY_7: 6,
|
||||
Gdk.KEY_8: 7,
|
||||
Gdk.KEY_9: 8,
|
||||
Gdk.KEY_0: 9,
|
||||
Gdk.KEY_minus: 10,
|
||||
Gdk.KEY_backslash: 11,
|
||||
}
|
||||
if keyval not in mappings:
|
||||
return False
|
||||
index = mappings[keyval]
|
||||
self.toggle_check(index)
|
||||
|
||||
def toggle_check(self, digit: int) -> None:
|
||||
check = self.checks[digit]
|
||||
state = check.get_active()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import Optional, TYPE_CHECKING
|
||||
|
||||
from dzgui.views.components.buttonbox import ButtonBox
|
||||
from dzgui.views.components.filter_panel import FilterPanel
|
||||
@@ -13,6 +13,7 @@ from gi.repository import Gtk, GLib # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
from dzgui.controllers.emitter import Emitter
|
||||
|
||||
|
||||
class RightPanel(Gtk.Box):
|
||||
@@ -78,5 +79,5 @@ class RightPanel(Gtk.Box):
|
||||
# thread = threading.Thread(target=_update_pings, args=())
|
||||
# thread.start()
|
||||
|
||||
def focus_button_box(self) -> None:
|
||||
def focus_button_box(self, emitter: Optional["Emitter"] = None) -> None:
|
||||
self.button_vbox.buttons[0].grab_focus()
|
||||
@@ -1,6 +1,7 @@
|
||||
from typing import Self, Union, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.enum import NotebookPage, ServerTab
|
||||
from dzgui.util.strings import esc_to_return, question_to_return
|
||||
|
||||
import gi
|
||||
|
||||
@@ -46,8 +47,8 @@ class Statusbar(Gtk.Grid):
|
||||
controller.mediator.notebook.connect_after(
|
||||
"switch-page", self._on_notebook_page_changed
|
||||
)
|
||||
self.emitter.connect("distcalc_started", self._on_distcalc_started)
|
||||
# TODO:
|
||||
self.emitter.connect("distcalc_started", lambda _: self.spinner.start())
|
||||
self.connect("distcalc_ended", self._on_distcalc_ended)
|
||||
|
||||
self.connect("server_page_changed", self._on_server_page_changed)
|
||||
@@ -77,10 +78,19 @@ class Statusbar(Gtk.Grid):
|
||||
|
||||
enum = notebook.get_page_by_enum()
|
||||
show_statusbar = enum.dict["statusbar"]
|
||||
|
||||
if show_statusbar is False:
|
||||
self.set_by_context(enum, "")
|
||||
return
|
||||
|
||||
if enum in (
|
||||
NotebookPage.THANKS,
|
||||
NotebookPage.CHANGELOG,
|
||||
NotebookPage.LOG,
|
||||
):
|
||||
self.set_by_context(enum, esc_to_return)
|
||||
return
|
||||
|
||||
match enum:
|
||||
case NotebookPage.MODS:
|
||||
bar = self.controller.format_mod_statusbar()
|
||||
@@ -89,6 +99,8 @@ class Statusbar(Gtk.Grid):
|
||||
case NotebookPage.SERVERS:
|
||||
self.emit("server_page_changed", ServerTab.BROWSER)
|
||||
return
|
||||
case NotebookPage.KEYS:
|
||||
bar = question_to_return
|
||||
|
||||
self.set_by_context(enum, bar)
|
||||
|
||||
@@ -122,7 +134,7 @@ class Statusbar(Gtk.Grid):
|
||||
|
||||
self.set_by_context(context, count)
|
||||
tree = self.controller.get_active_treeview()
|
||||
# TODO: emit page change signal on emitter, treeview catches signal and calls distcalc
|
||||
# TODO: emit page change signal on emitter, treeview catches signal and calls distcalc directly
|
||||
tree.emit("distcalc_started")
|
||||
|
||||
def pop(self, context: Union["ServerTab", "NotebookPage"]) -> None:
|
||||
|
||||
Reference in new issue
Block a user