mirror of
https://github.com/aclist/dztui.git
synced 2026-10-30 14:42:54 +01:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from typing import TYPE_CHECKING
|
|
|
|
from dzgui.const.enum import NotebookPage
|
|
from dzgui.util.strings import label_main_menu, crumbs
|
|
from dzgui.util.format import embolden
|
|
|
|
import gi
|
|
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402
|
|
|
|
if TYPE_CHECKING:
|
|
from dzgui.controllers.mc import Controller
|
|
from dzgui.views.base import Notebook
|
|
from dzgui.views.pages.servers import ServerNotebook
|
|
|
|
|
|
class Breadcrumbs(Gtk.Label):
|
|
def __init__(self, controller: "Controller") -> None:
|
|
super().__init__(halign=Gtk.Align.START)
|
|
|
|
crumbs = embolden(label_main_menu)
|
|
self.set_markup(crumbs)
|
|
|
|
notebook = controller.get_notebook()
|
|
servers = controller.get_server_notebook()
|
|
notebook.connect_after("switch-page", self._on_notebook_page_changed)
|
|
servers.connect_after("switch-page", self._on_server_tab_changed)
|
|
|
|
def _on_server_tab_changed(
|
|
self, notebook: "Notebook", page: Gtk.Widget, index: int
|
|
) -> None:
|
|
label = notebook.get_tab_label_text(page)
|
|
if label is None:
|
|
return
|
|
self.set_server_crumbs(label)
|
|
|
|
def _on_notebook_page_changed(
|
|
self, notebook: "Notebook", page: "ServerNotebook", index: int
|
|
) -> None:
|
|
enum = notebook.get_page_by_enum()
|
|
if enum == NotebookPage.SERVERS:
|
|
label = page.get_current_tab_text()
|
|
self.set_server_crumbs(label)
|
|
else:
|
|
crumbs = enum.dict["crumbs"]
|
|
self.set_crumbs(crumbs)
|
|
|
|
def set_server_crumbs(self, suffix: str) -> None:
|
|
self.set_crumbs(crumbs.default + suffix)
|
|
|
|
def set_crumbs(self, crumbs: str) -> None:
|
|
text = embolden(crumbs)
|
|
self.set_markup(text)
|