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


# ---*--- Dozor/modules/administrator/admin_user_inter.py ---*---

import tkinter as tk
from tkinter import ttk, messagebox
# Импортируем ваше готовое поведение окон
from modules.utils.window_behavior import LevelTwoBehavior

class AdminUserInter(tk.Toplevel):
    def __init__(self, parent):
        super().__init__(parent)
        self.parent_main = parent

        # --- Базовые настройки ---
        self.title("Пользователи")
        self.geometry("465x365")
        self.resizable(False, False)
        
        # Модальность поверх родителя
        self.transient(parent)
        self.grab_set()

        # --- Интерфейс ---
        container = ttk.Frame(self, padding="20")
        container.pack(expand=True, fill="both")

        left_panel = ttk.Frame(container)
        left_panel.pack(side="left", fill="y", padx=(0, 10))

        right_panel = ttk.Frame(container)
        right_panel.pack(side="right", fill="both", expand=True)

        actions = [
            ("Добавить пользователя", self.action_add),
            ("Сменить пользователя", self.action_change),
            ("Удалить пользователя", self.action_remove)
        ]

        for text, cmd in actions:
            ttk.Button(left_panel, text=text, command=cmd).pack(fill="x", pady=5)

        columns = ("ID", "Логин", "Роль")
        self.users_tree = ttk.Treeview(right_panel, columns=columns, show="headings")
        
        for col in columns:
            self.users_tree.heading(col, text=col)
            self.users_tree.column(col, anchor="center", width=100)
            
        self.users_tree.pack(fill="both", expand=True)
        self.load_stub_data()

        # --- Простое открытие рядом с центром ---
        self.update_idletasks() # Ждем размеров окна

        # Берем координаты ГЛАВНОГО ОКНА
        p_x = self.parent_main.winfo_rootx()
        p_y = self.parent_main.winfo_rooty()

        # Просто сдвигаем наше новое окно на 20 пикселей вправо и вниз
        x = p_x + 20
        y = p_y + 20
        
        self.geometry(f"+{x}+{y}")
        
    # --- Заглушки кнопок ---
    def action_add(self):
        messagebox.showinfo("Инфо", "Функционал добавления временно отключен.")

    def action_change(self):
        messagebox.showinfo("Инфо", "Функционал смены пользователя временно отключен.")

    def action_remove(self):
        selected_item = self.users_tree.selection()
        if not selected_item:
            messagebox.showwarning("Ошибка", "Выберите пользователя для удаления!")
            return
        
        user_id = int(self.users_tree.item(selected_item)["values"][0])
        answer = messagebox.askyesno(
            "Подтверждение", f"Удалить пользователя с ID={user_id}?\nВнимание: это действие пока не работает."
        )

    # --- Загрузка данных ---
    def load_stub_data(self):
        test_rows = [
            ("1", "admin", "Администратор"),
            ("2", "expert_ivan", "Эксперт"),
            ("3", "user_demo", "Пользователь"),
            ("4", "guest_reader", "Пользователь")
        ]
        
        for i in self.users_tree.get_children():
            self.users_tree.delete(i)
            
        for row in test_rows:
            self.users_tree.insert("", "end", values=row)