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


# ---*--- 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()
    # --- ПРИНУДИТЕЛЬНО ДОБАВЛЯЕМ АТРИБУТ СЕССИИ ---
    # Это гарантирует, что self.current_user будет существовать 
    # даже до того, как пользователь нажал кнопку "Войти".
    if not hasattr(app, 'current_user'):
        app.current_user = {"login": None}
        
    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)
            auth_win.destroy()
            
            # --- ЗАПИСЫВАЕМ ДАННЫЕ В ОБЪЕКТ ОКНА ---
            app.current_user = {
                "login": username,
                "role": "Эксперт" # Устанавливаем роль по умолчанию
            }
        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()