import customtkinter as ctk
import os
from view.theme import theme_manager

class ReportCompleteDialog(ctk.CTkToplevel):
    """보고서 생성 완료를 알리는 다이얼로그"""
    def __init__(self, parent, file_path):
        super().__init__(parent)
        self.file_path = file_path
        self.title("보고서 생성 완료")
        
        # 윈도우 크기 및 중앙 배치
        self.width = 450
        self.height = 250
        self._center_window()
        
        # 항상 위
        self.attributes('-topmost', True)
        self.transient(parent)
        
        # ESC 닫기
        self.bind("<Escape>", lambda e: self.destroy())

        # 메인 레이아웃
        self.main_frame = ctk.CTkFrame(self)
        self.main_frame.pack(fill="both", expand=True, padx=20, pady=20)
        
        # 메시지
        ctk.CTkLabel(
            self.main_frame, 
            text="✔ 보고서 생성이 완료되었습니다!", 
            font=theme_manager.get_font(18, "bold"),
            text_color=("green", "lightgreen")
        ).pack(pady=(20, 10))
        
        filename = os.path.basename(file_path)
        ctk.CTkLabel(
            self.main_frame,
            text=f"파일명: {filename}",
            font=theme_manager.get_font(12),
            wraplength=380
        ).pack(pady=(0, 20))

        # 버튼 그룹
        btn_frame = ctk.CTkFrame(self.main_frame, fg_color="transparent")
        btn_frame.pack(fill="x", pady=10)
        
        ctk.CTkButton(
            btn_frame, text="현 폴더 열기", 
            command=self._open_folder,
            font=theme_manager.get_font(12, "bold")
        ).pack(side="left", padx=(40, 5), expand=True)
        
        ctk.CTkButton(
            btn_frame, text="확인", 
            fg_color="gray",
            command=self.destroy,
            font=theme_manager.get_font(12)
        ).pack(side="left", padx=(5, 40), expand=True)

        # 효과: 1초 뒤에 맨 위로 다시 한 번 끌어올리기 (사용자 요청)
        self.after(1000, self._ensure_top)

    def _open_folder(self):
        """파일이 저장된 폴더를 엽니다."""
        folder = os.path.dirname(self.file_path)
        if os.path.exists(folder):
            os.startfile(folder)
            self.destroy()

    def _ensure_top(self):
        if self.winfo_exists():
            self.lift()
            self.attributes('-topmost', True)
            self.focus_force()

    def _center_window(self):
        self.update_idletasks()
        screen_width = self.winfo_screenwidth()
        screen_height = self.winfo_screenheight()
        x = (screen_width // 2) - (self.width // 2)
        y = (screen_height // 2) - (self.height // 2)
        self.geometry(f"{self.width}x{self.height}+{x}+{y}")
