From 6131d66c9a095cb78b5917c870ad7c735b4beed0 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:33:13 +0900 Subject: [PATCH] chore: add untracked crumbs file --- dzgui/views/components/crumbs.py | 52 ++++++++++++++++++++++++++++++++ scripts/untracked.py | 16 ++++++++++ 2 files changed, 68 insertions(+) create mode 100644 dzgui/views/components/crumbs.py create mode 100644 scripts/untracked.py diff --git a/dzgui/views/components/crumbs.py b/dzgui/views/components/crumbs.py new file mode 100644 index 0000000..cd83488 --- /dev/null +++ b/dzgui/views/components/crumbs.py @@ -0,0 +1,52 @@ +from typing import TYPE_CHECKING + +from dzgui.const.enum import NotebookPage +from dzgui.util.strings import label_main_menu +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 + + +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.mediator.notebook + servers = controller.mediator.servers.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) + self.set_server_crumbs(label) + + def _on_notebook_page_changed( + self, notebook: "Notebook", page: Gtk.Widget, 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, crumbs: str) -> None: + # TODO: strings + self.set_crumbs("Servers > " + crumbs) + + def set_crumbs(self, crumbs: str) -> None: + text = embolden(crumbs) + self.set_markup(text) diff --git a/scripts/untracked.py b/scripts/untracked.py new file mode 100644 index 0000000..89bef95 --- /dev/null +++ b/scripts/untracked.py @@ -0,0 +1,16 @@ +import os +import subprocess +import sys + +cmd = ["git", "ls-files", "--others", "--exclude-standard"] +result = subprocess.Popen( + cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True +) +with open(".gitignore", "r") as f: + ignored = [line.rstrip() for line in f] + +untracked = [os.path.basename(line.rstrip()) for line in result.stdout] +for file in untracked: + if not any(file in item for item in ignored): + print(f"File '{file}' is untracked") + sys.exit(1)