Compare commits

..

No commits in common. "b4b6fa4e8773bef56b4b79c65c3f861d968e2b49" and "382bccaedd20b6eabfd107738850835f77b9c966" have entirely different histories.

3 changed files with 17 additions and 49 deletions

View File

@ -83,17 +83,12 @@ class ColorPickerMixin:
def _update_selected_colour(self, r: int, g: int, b: int) -> None: def _update_selected_colour(self, r: int, g: int, b: int) -> None:
self.selected_colour = (r, g, b) self.selected_colour = (r, g, b)
hex_colour = f"#{r:02x}{g:02x}{b:02x}"
if hasattr(self, "current_colour_sw"): if hasattr(self, "current_colour_sw"):
hex_colour = f"#{r:02x}{g:02x}{b:02x}"
try: try:
self.current_colour_sw.configure(background=hex_colour) self.current_colour_sw.configure(background=hex_colour)
except Exception: except Exception:
pass pass
if hasattr(self, "current_colour_label"):
try:
self.current_colour_label.configure(text=f"Aktuelle Farbe ({hex_colour})")
except Exception:
pass
def _set_slider_targets(self, hue_deg: float, saturation: float, value: float) -> None: def _set_slider_targets(self, hue_deg: float, saturation: float, value: float) -> None:
span = getattr(self, "hue_span", 45.0) span = getattr(self, "hue_span", 45.0)

View File

@ -38,7 +38,7 @@ class ThemeMixin:
status_fg = "#f5f5f5" status_fg = "#f5f5f5"
highlight_fg = "#f2c744" highlight_fg = "#f2c744"
else: else:
bg, fg = "#ffffff", "#202020" bg, fg = "#ededf2", "#202020"
status_fg = "#1c1c1c" status_fg = "#1c1c1c"
highlight_fg = "#c56217" highlight_fg = "#c56217"
self.root.configure(bg=bg) # type: ignore[attr-defined] self.root.configure(bg=bg) # type: ignore[attr-defined]

View File

@ -1,11 +1,10 @@
"""UI helpers and reusable Tk callbacks.""" """UI helpers and reusable Tk callbacks."""
from __future__ import annotations from __future__ import annotations
import colorsys import tkinter as tk
import tkinter as tk import tkinter.font as tkfont
import tkinter.font as tkfont from tkinter import ttk
from tkinter import ttk
class UIBuilderMixin: class UIBuilderMixin:
@ -50,26 +49,20 @@ class UIBuilderMixin:
palette_frame = ttk.Frame(self.root) palette_frame = ttk.Frame(self.root)
palette_frame.pack(fill=tk.X, padx=12, pady=(6, 8)) palette_frame.pack(fill=tk.X, padx=12, pady=(6, 8))
default_colour = self._default_colour_hex()
current_frame = ttk.Frame(palette_frame)
current_frame.pack(side=tk.LEFT, padx=(0, 16))
ttk.Label(current_frame, text="Farbe:").pack(side=tk.LEFT, padx=(0, 6))
self.current_colour_sw = tk.Canvas( self.current_colour_sw = tk.Canvas(
current_frame, palette_frame,
width=24, width=24,
height=24, height=24,
highlightthickness=0, highlightthickness=0,
background=default_colour, background="#f2c744",
bd=0, bd=0,
) )
self.current_colour_sw.pack(side=tk.LEFT, pady=2) self.current_colour_sw.pack(side=tk.LEFT, padx=(0, 8), pady=2)
self.current_colour_label = ttk.Label(current_frame, text=f"({default_colour})") self.current_colour_label = ttk.Label(palette_frame, text="Aktuelle Farbe")
self.current_colour_label.pack(side=tk.LEFT, padx=(6, 0)) self.current_colour_label.pack(side=tk.LEFT, padx=(0, 8))
ttk.Label(palette_frame, text="Beispielfarben:").pack(side=tk.LEFT, padx=(0, 8))
ttk.Label(palette_frame, text="Weitere Farben:").pack(side=tk.LEFT, padx=(0, 8)) swatch_container = ttk.Frame(palette_frame)
swatch_container = ttk.Frame(palette_frame) swatch_container.pack(side=tk.LEFT)
swatch_container.pack(side=tk.LEFT)
for name, hex_code in self._preset_colours(): for name, hex_code in self._preset_colours():
self._add_palette_swatch(swatch_container, name, hex_code) self._add_palette_swatch(swatch_container, name, hex_code)
@ -521,26 +514,6 @@ class UIBuilderMixin:
self.ratio_label.configure(foreground=colour) self.ratio_label.configure(foreground=colour)
except Exception: except Exception:
pass pass
def _default_colour_hex(self) -> str:
defaults = getattr(self, "DEFAULTS", {})
hue_min = float(defaults.get("hue_min", 0.0))
hue_max = float(defaults.get("hue_max", hue_min))
if hue_min <= hue_max:
hue = (hue_min + hue_max) / 2.0
else:
span = ((hue_max + 360.0) - hue_min) / 2.0
hue = (hue_min + span) % 360.0
sat_min = float(defaults.get("sat_min", 0.0))
saturation = (sat_min + 100.0) / 2.0
val_min = float(defaults.get("val_min", 0.0))
val_max = float(defaults.get("val_max", 100.0))
value = (val_min + val_max) / 2.0
r, g, b = colorsys.hsv_to_rgb(hue / 360.0, saturation / 100.0, value / 100.0)
return f"#{int(r * 255):02x}{int(g * 255):02x}{int(b * 255):02x}"
def _init_copy_menu(self): def _init_copy_menu(self):
self._copy_target = None self._copy_target = None