mirror of
https://github.com/aclist/dztui.git
synced 2026-10-30 14:42:54 +01:00
fix: start filters insensitive if tree is empty
This commit is contained in:
1 parent
d92a0010e2
commit
8e6cff4bf0
5 files changed
+44
-21
No files matched your search
@@ -60,6 +60,11 @@ class Emitter(GObject.GObject):
|
|||||||
def check_button_pressed(self, keyval: int) -> None:
|
def check_button_pressed(self, keyval: int) -> None:
|
||||||
"""User toggled filter panel check button via keyboard"""
|
"""User toggled filter panel check button via keyboard"""
|
||||||
|
|
||||||
|
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(object,))
|
||||||
|
def server_page_changed(self, keyval: int) -> None:
|
||||||
|
"""Triggered on 'switch-page' signal within tabs of NotebookPage.SERVERS."""
|
||||||
|
pass
|
||||||
|
|
||||||
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(bool,))
|
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(bool,))
|
||||||
def server_page_toggled(self, keyval: int) -> None:
|
def server_page_toggled(self, keyval: int) -> None:
|
||||||
"""Triggered on map/unmap signal from NotebookPage.SERVERS. Shows/hides grid panels."""
|
"""Triggered on map/unmap signal from NotebookPage.SERVERS. Shows/hides grid panels."""
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ from gi.repository import Gtk, Gdk, GLib # noqa E402
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from dzgui.controllers.mc import Controller
|
from dzgui.controllers.mc import Controller
|
||||||
from dzgui.controllers.emitter import Emitter
|
from dzgui.controllers.emitter import Emitter
|
||||||
|
from dzgui.controllers.views.trees.tree_servers import ServerTreeView
|
||||||
|
|
||||||
|
|
||||||
class RightPanel(Gtk.Box):
|
class RightPanel(Gtk.Box):
|
||||||
@@ -27,6 +28,7 @@ class RightPanel(Gtk.Box):
|
|||||||
|
|
||||||
emitter = controller.get_emitter()
|
emitter = controller.get_emitter()
|
||||||
emitter.connect("servers_loaded", self._on_servers_loaded)
|
emitter.connect("servers_loaded", self._on_servers_loaded)
|
||||||
|
emitter.connect("server_page_changed", self._on_server_page_changed)
|
||||||
|
|
||||||
self.button_vbox = ButtonBox(controller)
|
self.button_vbox = ButtonBox(controller)
|
||||||
self.filters_vbox = FilterPanel(controller)
|
self.filters_vbox = FilterPanel(controller)
|
||||||
@@ -56,7 +58,15 @@ class RightPanel(Gtk.Box):
|
|||||||
self.pack_start(self.sel_panel, NO_EXPAND, NO_FILL, NO_PADDING)
|
self.pack_start(self.sel_panel, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||||
self.pack_start(eb, NO_EXPAND, FILL, NO_PADDING)
|
self.pack_start(eb, NO_EXPAND, FILL, NO_PADDING)
|
||||||
|
|
||||||
|
def _on_server_page_changed(self, emitter: "Emitter", page: "ServerTreeView") -> None:
|
||||||
|
"""Initially set filter area to disabled"""
|
||||||
|
if page.loaded is True:
|
||||||
|
return
|
||||||
|
self.filters_vbox.set_sensitive(False)
|
||||||
|
|
||||||
def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None:
|
def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None:
|
||||||
|
# TODO: similar logic on notebook page change
|
||||||
|
print('servers loaded')
|
||||||
state = self.controller.has_server_model()
|
state = self.controller.has_server_model()
|
||||||
for widget in (self.refresh_button, self.filters_vbox):
|
for widget in (self.refresh_button, self.filters_vbox):
|
||||||
widget.set_sensitive(state)
|
widget.set_sensitive(state)
|
||||||
|
|||||||
@@ -17,7 +17,19 @@ class Log(CursorMixin, HelpMenuMixin, Gtk.ScrolledWindow): # type: ignore
|
|||||||
def __init__(self, controller: "Controller") -> None:
|
def __init__(self, controller: "Controller") -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.treeview = LogTreeView(controller)
|
self.treeview = LogTreeView(controller)
|
||||||
self.add(self.treeview)
|
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||||
|
self.box.add(self.treeview)
|
||||||
|
|
||||||
|
#self.add(self.treeview)
|
||||||
|
# TODO proxymodel into this
|
||||||
|
|
||||||
|
self.check_bar = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
||||||
|
for check in ("Warning", "Critical", "Debug", "Info"):
|
||||||
|
c = Gtk.CheckButton(label=check)
|
||||||
|
self.check_bar.pack_start(c, False, False, 0)
|
||||||
|
# c.set_active(True)
|
||||||
|
self.box.add(self.check_bar)
|
||||||
|
self.add(self.box)
|
||||||
|
|
||||||
self.controller = controller
|
self.controller = controller
|
||||||
self.controller.register_widget("logtreeview", self.treeview)
|
self.controller.register_widget("logtreeview", self.treeview)
|
||||||
|
|||||||
@@ -18,6 +18,17 @@ if TYPE_CHECKING:
|
|||||||
from dzgui.controllers.mc import Emitter
|
from dzgui.controllers.mc import Emitter
|
||||||
|
|
||||||
|
|
||||||
|
class ScrollableTree(Gtk.ScrolledWindow):
|
||||||
|
def __init__(self, tree: "ServerTreeView") -> None:
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
self.tree = tree
|
||||||
|
self.add(tree)
|
||||||
|
|
||||||
|
def get_tree(self) -> "ServerTreeView":
|
||||||
|
return self.tree
|
||||||
|
|
||||||
|
|
||||||
class ServerNotebook(Gtk.ScrolledWindow):
|
class ServerNotebook(Gtk.ScrolledWindow):
|
||||||
def __init__(self, controller: "Controller"):
|
def __init__(self, controller: "Controller"):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@@ -45,8 +56,7 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
|||||||
]
|
]
|
||||||
|
|
||||||
for tree, label in tabs:
|
for tree, label in tabs:
|
||||||
scrolled = Gtk.ScrolledWindow()
|
scrolled = ScrollableTree(tree)
|
||||||
scrolled.add(tree)
|
|
||||||
self.notebook.append_page(scrolled, Gtk.Label(label=label))
|
self.notebook.append_page(scrolled, Gtk.Label(label=label))
|
||||||
|
|
||||||
self.add(self.notebook)
|
self.add(self.notebook)
|
||||||
@@ -77,9 +87,6 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
|||||||
|
|
||||||
def _on_map(self, widget: Self) -> None:
|
def _on_map(self, widget: Self) -> None:
|
||||||
self.emitter.emit("server_page_toggled", True)
|
self.emitter.emit("server_page_toggled", True)
|
||||||
# FIXME: only applies to server notebook, not atomic page
|
|
||||||
# this can be delegated to the map/unmap signal of the ServerTreeView itself
|
|
||||||
# self.get_active_treeview().start_timeout()
|
|
||||||
|
|
||||||
def _on_unmap(self, widget: Self) -> None:
|
def _on_unmap(self, widget: Self) -> None:
|
||||||
self.emitter.emit("server_page_toggled", False)
|
self.emitter.emit("server_page_toggled", False)
|
||||||
@@ -105,7 +112,7 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
|||||||
return self.notebook.get_tab_label_text(child)
|
return self.notebook.get_tab_label_text(child)
|
||||||
|
|
||||||
def _on_page_changed(
|
def _on_page_changed(
|
||||||
self, notebook: Gtk.Notebook, child: Gtk.Widget, index: int
|
self, notebook: Gtk.Notebook, child: ScrollableTree, index: int
|
||||||
) -> None:
|
) -> None:
|
||||||
if self.controller.loaded is False:
|
if self.controller.loaded is False:
|
||||||
return
|
return
|
||||||
@@ -115,6 +122,9 @@ class ServerNotebook(Gtk.ScrolledWindow):
|
|||||||
text = label.strip("*")
|
text = label.strip("*")
|
||||||
self.notebook.set_tab_label_text(child, text)
|
self.notebook.set_tab_label_text(child, text)
|
||||||
|
|
||||||
|
tree = child.get_tree()
|
||||||
|
self.emitter.emit("server_page_changed", tree)
|
||||||
|
|
||||||
# NOTE: spawns a thread
|
# NOTE: spawns a thread
|
||||||
self.controller.populate_model(self.get_active_treeview())
|
self.controller.populate_model(self.get_active_treeview())
|
||||||
|
|
||||||
|
|||||||
@@ -52,20 +52,6 @@ class LogTreeView(ContextMixin, TreeView):
|
|||||||
if event.button == Gdk.BUTTON_SECONDARY:
|
if event.button == Gdk.BUTTON_SECONDARY:
|
||||||
self.present_menu(widget, event)
|
self.present_menu(widget, event)
|
||||||
return True
|
return True
|
||||||
#selection = self.get_selection()
|
|
||||||
#model, selected_paths = selection.get_selected_rows()
|
|
||||||
#if len(selected_paths) > 1:
|
|
||||||
# for path in selected_paths:
|
|
||||||
# selection.select_path(path)
|
|
||||||
# path, col, x, y = self.get_path_at_pos(int(event.x), int(event.y))
|
|
||||||
# if path:
|
|
||||||
# selection = self.get_selection()
|
|
||||||
# model, selected_paths = selection.get_selected_rows()
|
|
||||||
# if path not in selected_paths:
|
|
||||||
# selection.select_path(path)
|
|
||||||
# self.present_menu(widget, event)
|
|
||||||
# return True
|
|
||||||
#return False
|
|
||||||
|
|
||||||
def _on_log_keypress(self, widget: Gtk.Widget, event: Gdk.EventKey) -> None:
|
def _on_log_keypress(self, widget: Gtk.Widget, event: Gdk.EventKey) -> None:
|
||||||
self.present_menu(widget, event)
|
self.present_menu(widget, event)
|
||||||
Reference in new issue
Block a user