Загрузка данных


# ---*--- Dozor/main.py ---*---

# -*- coding: utf-8 -*-

import sys
import tkinter as tk
from tkinter import ttk
from gui.main_interface import MainInterface 
from modules.data.database_module import init_database
from modules.utils.app_state import disable_app, enable_app

# Импорт окна авторизации (добавлено)
try:
    from gui.auth_interface import AuthInterface
except ImportError:
    print("[FATAL] Не найден файл gui/auth_interface.py")
    sys.exit(1)

init_database()

def main():
    # --- ШАГ 1: Создаем ГЛАВНОЕ ОКНО ---
    # ИСПРАВЛЕНО: Теперь мы создаем экземпляр твоего подготовленного класса
    app = MainInterface()
    
    app.title("ДОЗОР -- Heri-Hodie-Cras")
    app.geometry("458x360") 
    app.resizable(False, False)

    current_user = {"login": None}

    def do_login(username, password):
        """Обработчик успеха из окна авторизации."""
        if username and password:
            current_user["login"] = username
            enable_app(app)  # Разблокируем именно это окно 'app'
            auth_win.destroy() 
        else:
            from tkinter import messagebox
            messagebox.showwarning("Ошибка", "Поля не могут быть пустыми")

    # --- ШАГ 2: Блокируем интерфейс ДО любых расчетов геометрии ---
    disable_app(app) 

    # Центрируем окно НА ЭКРАНЕ
    screen_w = app.winfo_screenwidth()
    screen_h = app.winfo_screenheight()
    win_w, win_h = 458, 360
    pos_x = int((screen_w / 2) - (win_w / 2))
    pos_y = int((screen_h / 2) - (win_h / 2))
    app.geometry(f"{win_w}x{win_h}+{pos_x}+{pos_y}") 

    app.deiconify()
    app.lift()
    app.focus_force()

    # Поверх главного окна открываем модальное окно входа
    try:
        auth_win = AuthInterface(app, on_login_click=do_login)
        auth_win.transient(app)
        auth_win.grab_set() 
        
        app.wait_window(auth_win)
    except Exception as e:
        print(f"[CRITICAL ERROR] Failed to initialize Auth Window: {e}")
        app.destroy()
        return

    if not current_user["login"]:
        app.destroy()
        return

    # --- ШАГ 3: Приложение работает ---
    app.mainloop()


if __name__ == "__main__":
    main()