mirror of
https://github.com/aclist/dztui.git
synced 2026-11-06 10:00:54 +01:00
feat: mediator rewrite (WIP)
This commit is contained in:
1 parent
69cde11e8e
commit
aba00f732a
7 files changed
+163
-180
No files matched your search
@@ -13,7 +13,7 @@ from dzgui.const.constants import NO_EXPAND, NO_FILL, NO_PADDING
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class FilterPanel(Gtk.Box):
|
||||
def __init__(self, appnav, controller):
|
||||
def __init__(self, controller):
|
||||
super().__init__(spacing=6, vexpand=False)
|
||||
|
||||
# TODO: set strings in constants
|
||||
@@ -32,7 +32,6 @@ class FilterPanel(Gtk.Box):
|
||||
strings.filter_modded: True,
|
||||
}
|
||||
|
||||
self.AppNav = appnav
|
||||
self.controller = controller
|
||||
|
||||
map_store = self.controller.get_map_store()
|
||||
@@ -140,7 +139,8 @@ class FilterPanel(Gtk.Box):
|
||||
self.keyword_filter = ""
|
||||
self.reinit_filters()
|
||||
self.set_visible(False)
|
||||
sel_panel = self.AppNav.grid.sel_panel
|
||||
# TODO:
|
||||
sel_panel = self.controller.mediator.grid.sel_panel
|
||||
if sel_panel.is_visible():
|
||||
sel_panel.set_visible(False)
|
||||
|
||||
@@ -194,7 +194,8 @@ class FilterPanel(Gtk.Box):
|
||||
completion.set_model(map_store)
|
||||
|
||||
def restore_focus_to_treeview(self) -> Literal[False]:
|
||||
self.AppNav.treeview.grab_focus()
|
||||
view = self.controller.get_active_treeview()
|
||||
view.grab_focus()
|
||||
return False
|
||||
|
||||
def _on_keyword_keypress(
|
||||
@@ -233,7 +234,8 @@ class FilterPanel(Gtk.Box):
|
||||
return self.keyword_filter
|
||||
|
||||
def _on_keyword_enter(self, entry: Gtk.Entry) -> None:
|
||||
self.AppNav.window.set_keep_below(False)
|
||||
# TODO:
|
||||
self.controller.mediator.window.set_keep_below(False)
|
||||
keyword = entry.get_text().lower()
|
||||
if keyword == self.keyword_filter:
|
||||
return
|
||||
@@ -241,7 +243,8 @@ class FilterPanel(Gtk.Box):
|
||||
return
|
||||
logger.info(f"User filtered by keyword '{keyword}'")
|
||||
self.keyword_filter = keyword
|
||||
self.AppNav.treeview.filter(FilterMode.KEYWORD, keyword)
|
||||
treeview = self.controller.get_active_treeview()
|
||||
treeview.filter(FilterMode.KEYWORD, keyword)
|
||||
|
||||
def _on_button_release(self, window, button) -> Literal[True]:
|
||||
return True
|
||||
@@ -258,7 +261,9 @@ class FilterPanel(Gtk.Box):
|
||||
check.set_active(not state)
|
||||
|
||||
def _on_check_toggled(self, button: Gtk.CheckButton) -> None:
|
||||
if not self.AppNav.treeview.is_server_context(self.AppNav.treeview.view):
|
||||
treeview = self.controller.get_active_treeview()
|
||||
# TODO: drop
|
||||
if not treeview.is_server_context(self.AppNav.treeview.view):
|
||||
return
|
||||
label = button.get_label()
|
||||
state = button.get_active()
|
||||
@@ -269,9 +274,10 @@ class FilterPanel(Gtk.Box):
|
||||
mode = FilterMode.TOGGLE_OFF
|
||||
|
||||
self.enabled_filters[label] = state
|
||||
self.AppNav.treeview.filter(mode, label)
|
||||
treeview.filter(mode, label)
|
||||
|
||||
def _on_map_changed(self, combo: Gtk.ComboBox) -> None:
|
||||
treeview = self.controller.get_active_treeview()
|
||||
old_sel = self.selected_map
|
||||
model = combo.get_model()
|
||||
tree_iter = combo.get_active_iter()
|
||||
@@ -286,4 +292,4 @@ class FilterPanel(Gtk.Box):
|
||||
self.prior_map = self.selected_map
|
||||
self.selected_map = selection
|
||||
self.maps_entry.set_text(selection)
|
||||
self.AppNav.treeview.filter(FilterMode.MAP)
|
||||
treeview.filter(FilterMode.MAP)
|
||||
@@ -5,6 +5,7 @@ from gi.repository import Gtk, Gdk
|
||||
from dzgui.const.enum import Preferences
|
||||
from dzgui.views.components.buttonbox import ButtonBox
|
||||
from dzgui.views.components.filter_panel import FilterPanel
|
||||
from dzgui.views.components.mod_panel import ModSelectionPanel
|
||||
from dzgui.views.components.icon import Icon
|
||||
from dzgui.views.components.web_button import RefreshButton
|
||||
# TODO: rename web_button
|
||||
@@ -13,15 +14,20 @@ from dzgui.util import strings
|
||||
|
||||
# TODO: refactor depends on ServerTreeView
|
||||
class RightPanel(Gtk.Box):
|
||||
def __init__(self, appnav, controller):
|
||||
def __init__(self, controller):
|
||||
super().__init__(spacing=6, orientation=Gtk.Orientation.VERTICAL)
|
||||
|
||||
self.AppNav = appnav
|
||||
self.AppNav.right_panel = self
|
||||
self.controller = controller
|
||||
|
||||
self.button_vbox = ButtonBox(controller)
|
||||
self.filters_vbox = FilterPanel(appnav, controller)
|
||||
|
||||
|
||||
self.filters_vbox = FilterPanel(controller)
|
||||
self.sel_panel = ModSelectionPanel(controller)
|
||||
|
||||
self.controller.register_widget("right_panel", self)
|
||||
|
||||
self.sel_panel.set_visible(False)
|
||||
self.filters_vbox.set_visible(False)
|
||||
|
||||
# TODO: more custom button classes
|
||||
self.ping = Gtk.Button(
|
||||
@@ -49,26 +55,30 @@ class RightPanel(Gtk.Box):
|
||||
self.refresh_button.set_margin_end(80)
|
||||
self.refresh_button.connect("clicked", self._on_refresh_clicked)
|
||||
|
||||
if controller.query_config(Preferences.DEBUG) == True:
|
||||
self.debug_toggle.set_active(True)
|
||||
self.debug_toggle.connect("toggled", self._on_debug_toggled)
|
||||
#if controller.query_config(Preferences.DEBUG) == True:
|
||||
# self.debug_toggle.set_active(True)
|
||||
#self.debug_toggle.connect("toggled", self._on_debug_toggled)
|
||||
|
||||
# TODO: make button class
|
||||
i = Icon(INPUT_KEYBOARD)
|
||||
i.set_margin_start(5)
|
||||
self.question = Gtk.Button(
|
||||
self.keys = Gtk.Button(
|
||||
label=strings.keys_button,
|
||||
margin_start=80,
|
||||
margin_end=80,
|
||||
tooltip_text=strings.keys_tooltip,
|
||||
image = i,
|
||||
)
|
||||
self.question.set_image_position(Gtk.PositionType.RIGHT)
|
||||
self.question.connect("clicked", self._on_question_clicked)
|
||||
self.keys.set_image_position(Gtk.PositionType.RIGHT)
|
||||
self.keys.connect("clicked", self._on_question_clicked)
|
||||
|
||||
for el in self.button_vbox, self.question, self.filters_vbox, self.refresh_button:
|
||||
for el in self.button_vbox, self.filters_vbox, self.refresh_button:
|
||||
self.pack_start(el, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
self.pack_start(self.sel_panel, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
self.pack_start(self.keys, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
|
||||
def enable_ping_button(self, state: bool) -> None:
|
||||
self.ping.set_visible(state)
|
||||
|
||||
@@ -80,17 +90,6 @@ class RightPanel(Gtk.Box):
|
||||
self.selected = "All maps"
|
||||
self.filters_vbox.set_unique_maps(rows)
|
||||
|
||||
def toggle_debug(self) -> None:
|
||||
if type(self.AppNav.window.get_focus()) is Gtk.Entry:
|
||||
return
|
||||
state = self.debug_toggle.get_active()
|
||||
self.debug_toggle.set_active(not state)
|
||||
|
||||
def _on_debug_toggled(self, button: Gtk.Button) -> None:
|
||||
state = button.get_active()
|
||||
grid = self.AppNav.grid
|
||||
self.controller.toggle_debug_mode()
|
||||
|
||||
def _on_refresh_clicked(self, button: RefreshButton) -> None:
|
||||
self.controller.refresh_tree()
|
||||
|
||||
@@ -112,11 +111,10 @@ class RightPanel(Gtk.Box):
|
||||
path = Gtk.TreePath.new_from_indices([res.iteration])
|
||||
temp_model[path][9] = res.ping
|
||||
ModelManager.ping_cache[res.addr] = res.ping
|
||||
# TODO: drop/rewrite
|
||||
self.AppNav.treeview.set_model(temp_model)
|
||||
self.AppNav.treeview.wait_dialog.destroy()
|
||||
self.AppNav.treeview.enable_ping_column(True)
|
||||
self.AppNav.treeview.grab_focus()
|
||||
self.AppNav.right_panel.ping.set_sensitive(False)
|
||||
|
||||
# TODO:
|
||||
unblock_signals()
|
||||
@@ -129,7 +127,7 @@ class RightPanel(Gtk.Box):
|
||||
thread.start()
|
||||
|
||||
def _on_question_clicked(self, button: Gtk.Button) -> None:
|
||||
self.AppNav.grid.notebook.toggle_keybindings()
|
||||
self.controller.open_keybindings()
|
||||
|
||||
def focus_button_box(self) -> None:
|
||||
self.button_vbox.buttons[0].grab_focus()
|
||||
Reference in new issue
Block a user