Tune nav arrow theming and toolbar spacing

This commit is contained in:
lm 2025-10-17 14:23:50 +02:00
parent 1588e8eb99
commit c7ac43dc37
2 changed files with 27 additions and 2 deletions

View File

@ -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)

View File

@ -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