whisper-dictation/whisper_app/overlay.py

46 lines
1.3 KiB
Python

# whisper_app/overlay.py
import os
import tkinter as tk
from whisper_app import app
_window: tk.Toplevel | None = None
def create(root: tk.Tk) -> None:
global _window
win = tk.Toplevel(root)
win.withdraw()
win.overrideredirect(True)
win.attributes("-topmost", True)
win.attributes("-alpha", 0.92)
win.configure(bg="#1a1a1a")
frame = tk.Frame(win, bg="#1a1a1a", padx=12, pady=10)
frame.pack(fill="both", expand=True)
dot = tk.Canvas(frame, width=14, height=14, bg="#1a1a1a", highlightthickness=0)
dot.create_oval(2, 2, 12, 12, fill="#e03030", outline="")
dot.pack(side="left", padx=(0, 8))
_sans = "Segoe UI" if os.name == "nt" else "sans-serif"
tk.Label(frame, text="Aufnahme läuft …", fg="white", bg="#1a1a1a",
font=(_sans, 11)).pack(side="left")
_window = win
def show() -> None:
if app.overlay_tk and _window:
app.overlay_tk.after(0, _show_main)
def hide() -> None:
if app.overlay_tk and _window:
app.overlay_tk.after(0, _hide_main)
def _show_main() -> None:
sw = app.overlay_tk.winfo_screenwidth()
sh = app.overlay_tk.winfo_screenheight()
_window.geometry(f"220x54+{sw - 240}+{sh - 100}")
_window.deiconify()
_window.lift()
def _hide_main() -> None:
_window.withdraw()