This commit is contained in:
2025-06-02 14:53:57 +03:00
parent 91231b6a53
commit d7dc3e4ec4
29 changed files with 1252 additions and 3571 deletions

View File

@ -0,0 +1,92 @@
import dearpygui.dearpygui as dpg
from src.ui.scanner_window import create_scanner_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: logger.info("Attacks selected"),
width=-1,
height=50
)
dpg.add_spacer(height=10)
dpg.add_button(
label="Генерация отчета",
callback=lambda: logger.info("Reporting selected"),
width=-1,
height=50
)
dpg.add_spacer(height=10)
dpg.add_button(
label="Лог приложения",
callback=lambda: logger.info("Log selected"),
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")