fix: align splash progress fill

This commit is contained in:
Marcel Peterkau
2026-06-21 21:44:38 +02:00
parent e6200f4a02
commit 2c89732228
2 changed files with 35 additions and 12 deletions
+1
View File
@@ -29,6 +29,7 @@
"Splash-Screen auf das eingebettete CCMA-Hintergrundmotiv umgestellt und redundante Titeltexte entfernt.",
"Konfigurierbare Mindestanzeigezeit des Splash-Screens mit fünf Sekunden Standardwert ergänzt.",
"Theme-unabhängigen Splash-Fortschrittsbalken in Bild-Blau mit Silberrahmen und zeitbasiertem Fortschritt eingeführt.",
"Innenfläche des Splash-Fortschrittsbalkens pixelgenau und ohne unteren Leerraum am Rahmen ausgerichtet.",
"Splash-Start verteilt seine Mindestanzeigezeit als optionales Mitglieder-Delay auf den Hausmeisterlauf, um insbesondere Netzwerk-Dateisysteme zu entlasten.",
"Hausmeister um konfigurierbare Geburtstags- und Mitgliedsjubiläumsmeldungen erweitert.",
"Statusänderungen werden mit altem und neuem Klartextwert in der Mitgliederchronik protokolliert.",
+34 -12
View File
@@ -217,27 +217,49 @@ class SplashProgressBar(tk.Canvas):
TRACK_COLOR = "#071a29"
FILL_COLOR = "#2389c9"
BORDER_COLOR = "#aeb8c2"
BORDER_WIDTH = 2
def __init__(self, master: tk.Misc, *, width: int, height: int):
inner_width = max(1, width - 4)
inner_height = max(1, height - 4)
super().__init__(
master,
width=inner_width,
height=inner_height,
background=self.TRACK_COLOR,
width=width,
height=height,
background=self.BORDER_COLOR,
borderwidth=0,
highlightthickness=2,
highlightbackground=self.BORDER_COLOR,
highlightcolor=self.BORDER_COLOR,
highlightthickness=0,
)
inset = self.BORDER_WIDTH
self._fill_left = inset
self._fill_top = inset
self._fill_width = max(1, width - 2 * inset)
self._fill_bottom = max(inset + 1, height - inset)
self.create_rectangle(
inset,
inset,
width - inset,
height - inset,
fill=self.TRACK_COLOR,
outline="",
)
self.fill_item = self.create_rectangle(
self._fill_left,
self._fill_top,
self._fill_left,
self._fill_bottom,
fill=self.FILL_COLOR,
outline="",
)
self._bar_width = inner_width
self._bar_height = inner_height
self.fill_item = self.create_rectangle(0, 0, 0, inner_height, fill=self.FILL_COLOR, outline="")
def set(self, percent: float) -> None:
value = min(100.0, max(0.0, float(percent)))
self.coords(self.fill_item, 0, 0, self._bar_width * value / 100.0, self._bar_height)
fill_right = self._fill_left + self._fill_width * value / 100.0
self.coords(
self.fill_item,
self._fill_left,
self._fill_top,
fill_right,
self._fill_bottom,
)
def centered_position(