Files
attack_module/src/ui/configuration_window.py
2025-07-17 22:39:52 +03:00

124 lines
5.1 KiB
Python

import dearpygui.dearpygui as dpg
from src.ui.scanner_window import create_scanner_window
from src.ui.logger_window import create_logger_window
from src.core.models.models import Session
from src.utils.logger import get_logger
logger = get_logger("config_window")
def create_configuration_window(db, session: Session):
"""Окно конфигурации сессии"""
with dpg.window(
tag="config_window",
label=f"Session: {session.name}",
no_collapse=True,
no_resize=True,
no_close=True,
no_title_bar=True,
no_scrollbar=True,
no_move=True,
no_scroll_with_mouse=True
):
# Главная горизонтальная группа для разделения на панели
with dpg.group(horizontal=True):
# Боковая панель навигации
with dpg.child_window(
tag="sidebar",
width=270,
height=-1,
border=False
):
dpg.add_text("Меню", color=(200, 200, 200))
dpg.add_separator()
dpg.add_button(
label="Сканирование",
callback=lambda: show_scanner_window(db, session),
width=-1,
height=50
)
dpg.add_spacer(height=10)
dpg.add_button(
label="Эксплуатация",
callback=lambda: show_attack_window(db, session),
width=-1,
height=50
)
dpg.add_spacer(height=10)
dpg.add_button(
label="Генерация отчета",
callback=lambda: show_report_window(db, session),
width=-1,
height=50
)
dpg.add_spacer(height=10)
dpg.add_button(
label="Лог приложения",
callback=lambda: show_logger_window(db, session),
width=-1,
height=50
)
dpg.add_spacer(height=30)
dpg.add_text(f"Сессия: {session.name}", color=(150, 150, 150))
created_at = session.created_at.strftime(
"""%Y-%m-%d
%H:%M"""
) if session.created_at else "Unknown"
dpg.add_text(f"Дата создания: {created_at}", color=(150, 150, 150))
# Основная область контента (контейнер)
with dpg.child_window(
tag="content_area",
width=-1,
height=-1,
border=False
):
# Начальное содержимое
dpg.add_text("Выберите подмодуль", tag="initial_content")
# Установить окно конфигурации как основное
dpg.set_primary_window("config_window", True)
def show_scanner_window(db, session):
"""Показать окно сканирования"""
# Очистить контентную область
if dpg.does_item_exist("content_area"):
dpg.delete_item("content_area", children_only=True)
# Создать окно сканирования внутри контентной области
create_scanner_window(db, session, parent="content_area")
def show_logger_window(db, session):
"""Показать окно логов"""
# Очистить контентную область
if dpg.does_item_exist("content_area"):
dpg.delete_item("content_area", children_only=True)
# Создать окно логов внутри контентной области
create_logger_window(db, session, parent="content_area")
def show_attack_window(db, session):
"""Показать окно эксплуатации"""
# Очистить контентную область
if dpg.does_item_exist("content_area"):
dpg.delete_item("content_area", children_only=True)
# Создать новую контентную область
# with dpg.child_window(parent="config_window", tag="content_area", width=-1, height=-1):
from src.ui.attack_window import create_attack_window
create_attack_window(db, session, parent="content_area")
def show_report_window(db, session):
"""Показать окно эксплуатации"""
# Очистить контентную область
if dpg.does_item_exist("content_area"):
dpg.delete_item("content_area", children_only=True)
# Создать новую контентную область
# with dpg.child_window(parent="config_window", tag="content_area", width=-1, height=-1):
from src.ui.report_window import create_report_window
create_report_window(db, session, parent="content_area")