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")