54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
"""Manual screenshot harness for every tab in all approved color schemes."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
import time
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
pytest.importorskip("customtkinter")
|
|
pytest.importorskip("PIL")
|
|
|
|
from PIL import ImageGrab
|
|
|
|
from antigravity_provider.router.hermes_hub_app import HermesHubApp
|
|
|
|
|
|
def capture_all(output_dir: Path) -> list[Path]:
|
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
app = HermesHubApp()
|
|
app.geometry("1366x768+20+20")
|
|
app.deiconify()
|
|
app.lift()
|
|
app.attributes("-topmost", True)
|
|
for _index in range(20):
|
|
app.update()
|
|
time.sleep(0.04)
|
|
|
|
captured = []
|
|
try:
|
|
for scheme in ("dark", "hybrid", "light"):
|
|
app._apply_theme(scheme)
|
|
for view_name, _label, _icon in app._nav_items:
|
|
app._show_view(view_name)
|
|
app.update_idletasks()
|
|
app.update()
|
|
time.sleep(0.08)
|
|
left = app.winfo_rootx()
|
|
top = app.winfo_rooty()
|
|
target = output_dir / f"{view_name}-{scheme}.png"
|
|
ImageGrab.grab(bbox=(left, top, left + app.winfo_width(), top + app.winfo_height())).save(target)
|
|
captured.append(target)
|
|
finally:
|
|
app.attributes("-topmost", False)
|
|
app._shutting_down = True
|
|
app.destroy()
|
|
return captured
|
|
|
|
|
|
if __name__ == "__main__":
|
|
destination = Path(sys.argv[1]) if len(sys.argv) > 1 else Path("artifacts/mockup-redesign")
|
|
for screenshot in capture_all(destination):
|
|
print(screenshot)
|