From c7ac43dc379306188d71210ec087cfcc74346231 Mon Sep 17 00:00:00 2001 From: lm Date: Fri, 17 Oct 2025 14:23:50 +0200 Subject: [PATCH] Tune nav arrow theming and toolbar spacing --- app/gui/theme.py | 4 ++++ app/gui/ui.py | 25 +++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/gui/theme.py b/app/gui/theme.py index 581097e..6532d90 100644 --- a/app/gui/theme.py +++ b/app/gui/theme.py @@ -53,6 +53,10 @@ class ThemeMixin: if callable(button_refresher): button_refresher() + nav_refresher = getattr(self, "_refresh_navigation_buttons_theme", None) + if callable(nav_refresher): + nav_refresher() + status_refresher = getattr(self, "_refresh_status_palette", None) if callable(status_refresher) and hasattr(self, "status"): status_refresher(status_fg) diff --git a/app/gui/ui.py b/app/gui/ui.py index fe869da..d0c4cef 100644 --- a/app/gui/ui.py +++ b/app/gui/ui.py @@ -27,6 +27,7 @@ class UIBuilderMixin: ("🌓 Theme umschalten", self.toggle_theme), ] self._toolbar_buttons: list[dict[str, object]] = [] + self._nav_buttons: list[tk.Button] = [] buttons_frame = ttk.Frame(toolbar) buttons_frame.pack(side=tk.LEFT) @@ -326,9 +327,10 @@ class UIBuilderMixin: return canvas.create_polygon(points, smooth=True, splinesteps=24, **kwargs) def _create_navigation_button(self, container, symbol: str, command, *, column: int) -> None: - bg = self.root.cget("bg") if hasattr(self.root, "cget") else "#f2f2f7" + palette = self._navigation_palette() + bg = palette["bg"] + fg = palette["fg"] container.grid_rowconfigure(0, weight=1) - fg = "#f5f5f5" if getattr(self, "theme", "light") == "dark" else "#1f1f1f" btn = tk.Button( container, text=symbol, @@ -345,6 +347,7 @@ class UIBuilderMixin: width=2, ) btn.grid(row=0, column=column, sticky="ns", padx=6) + self._nav_buttons.append(btn) def _create_titlebar(self) -> None: bar_bg = "#1f1f1f" @@ -443,6 +446,12 @@ class UIBuilderMixin: "text": "#1f1f1f", } + def _navigation_palette(self) -> dict[str, str]: + is_dark = getattr(self, "theme", "light") == "dark" + if is_dark: + return {"bg": "#26262a", "fg": "#f5f5f5"} + return {"bg": "#e8e8ee", "fg": "#1f1f1f"} + def _refresh_toolbar_buttons_theme(self) -> None: if not getattr(self, "_toolbar_buttons", None): return @@ -457,6 +466,18 @@ class UIBuilderMixin: canvas.itemconfigure(rect_id, fill=palette["normal"], outline=palette["outline"]) canvas.itemconfigure(text_id, fill=palette["text"]) + def _refresh_navigation_buttons_theme(self) -> None: + if not getattr(self, "_nav_buttons", None): + return + palette = self._navigation_palette() + for btn in self._nav_buttons: + btn.configure( + background=palette["bg"], + activebackground=palette["bg"], + fg=palette["fg"], + activeforeground=palette["fg"], + ) + def _refresh_status_palette(self, fg: str) -> None: self.status.configure(foreground=fg) self._status_palette["fg"] = fg