78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
"""Hermes Hub — Native Brand Splash Screen."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import tkinter as tk
|
|
from typing import Optional
|
|
import customtkinter as ctk
|
|
|
|
from antigravity_provider.router.ui.theme import Theme
|
|
from antigravity_provider.router.ui.assets import AssetManager
|
|
|
|
|
|
class SplashScreen(ctk.CTkToplevel):
|
|
"""Brand-compliant Splash Screen shown during initialization."""
|
|
|
|
def __init__(self, parent: ctk.CTk, width: int = 500, height: int = 300):
|
|
super().__init__(parent)
|
|
self.overrideredirect(True)
|
|
self.configure(fg_color=Theme.BG_WINDOW)
|
|
|
|
# Center on screen
|
|
self.update_idletasks()
|
|
sw = self.winfo_screenwidth()
|
|
sh = self.winfo_screenheight()
|
|
x = (sw - width) // 2
|
|
y = (sh - height) // 2
|
|
self.geometry(f"{width}x{height}+{x}+{y}")
|
|
|
|
# Container
|
|
container = ctk.CTkFrame(
|
|
self,
|
|
corner_radius=Theme.RADIUS_LG,
|
|
border_width=2,
|
|
border_color=Theme.BORDER_ACCENT,
|
|
fg_color=Theme.BG_WINDOW,
|
|
)
|
|
container.pack(fill="both", expand=True, padx=2, pady=2)
|
|
|
|
# Logo
|
|
logo_img = AssetManager.get().get_splash_logo(size=(100, 100))
|
|
if logo_img:
|
|
ctk.CTkLabel(container, image=logo_img, text="").pack(pady=(28, 8))
|
|
|
|
ctk.CTkLabel(
|
|
container,
|
|
text="HERMES HUB",
|
|
font=Theme.font_title_hero(),
|
|
text_color=Theme.TEXT_ACCENT,
|
|
).pack(pady=(0, 2))
|
|
|
|
ctk.CTkLabel(
|
|
container,
|
|
text="Multi-Agent & Multi-Provider Control Hub",
|
|
font=Theme.font_body(),
|
|
text_color=Theme.TEXT_PRIMARY,
|
|
).pack(pady=(0, 16))
|
|
|
|
# Progress indicator bar
|
|
self.progress = ctk.CTkProgressBar(
|
|
container,
|
|
width=300,
|
|
height=4,
|
|
corner_radius=2,
|
|
fg_color=Theme.SURFACE,
|
|
progress_color=Theme.ACCENT,
|
|
mode="indeterminate",
|
|
)
|
|
self.progress.pack(pady=(0, 20))
|
|
self.progress.start()
|
|
|
|
self.update()
|
|
|
|
def close(self):
|
|
try:
|
|
self.progress.stop()
|
|
self.destroy()
|
|
except Exception:
|
|
pass
|