"""
Point d'entrée pour l'interface moderne avec onglets.
Évite la logique de repli afin de garantir le rendu moderne dans l'exécutable dédié.
"""

import sys
from pathlib import Path
from datetime import datetime

try:
    import tkinter as tk
    from tkinter import messagebox
except Exception:  # pragma: no cover - messagebox facultatif
    tk = None
    messagebox = None

# Fix encodage UTF-8 pour Windows (émoticônes, textes traduits, etc.)
if sys.platform == 'win32':
    if hasattr(sys.stdout, 'reconfigure'):
        if sys.stdout.encoding != 'utf-8':
            sys.stdout.reconfigure(encoding='utf-8', errors='replace')
        if sys.stderr.encoding != 'utf-8':
            sys.stderr.reconfigure(encoding='utf-8', errors='replace')

# Ajouter le dossier racine au PYTHONPATH pour les imports absolus
sys.path.insert(0, str(Path(__file__).parent.parent.parent))


def main():
    """Lance exclusivement l'interface moderne."""
    try:
        from web_sentinel.gui.modern_tabbed_window import ModernWebSentinelGUI
        from web_sentinel.gui.themes_gui.shared import get_data_manager

        data_manager = get_data_manager()
        theme = data_manager.get_gui_theme()

        print(f"[Web Sentinel Modern] Démarrage avec thème: {theme}")

        app = ModernWebSentinelGUI(initial_theme=theme)
        app.run()

    except Exception as exc:  # pragma: no cover - diagnostic runtime
        _report_fatal_error(exc)
        sys.exit(1)


def _report_fatal_error(exc: Exception) -> None:
    """Log l'erreur dans un fichier et avertit l'utilisateur."""
    log_dir = Path.home() / ".web-sentinel" / "logs"
    log_dir.mkdir(parents=True, exist_ok=True)
    log_file = log_dir / "modern-gui-error.log"

    try:
        with log_file.open("a", encoding="utf-8") as fh:
            fh.write(f"[{datetime.now():%Y-%m-%d %H:%M:%S}] {exc}\n")
            import traceback

            traceback.print_exc(file=fh)
    except Exception:
        pass

    message = (
        "Web Sentinel GUI moderne n'a pas pu démarrer.\n"
        "Détails enregistrés dans: "
        f"{log_file}\n\nErreur: {exc}"
    )
    try:
        print(f"[Web Sentinel Modern] {message}")
    except Exception:
        pass

    if messagebox and tk:
        try:
            root = tk.Tk()
            root.withdraw()
            messagebox.showerror("Web Sentinel Modern", message)
            root.destroy()
        except Exception:
            pass


if __name__ == "__main__":
    main()
