124 lines
5.1 KiB
Python
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") |