# ---*--- 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)