Files
radar_system/python_app/docs/gui_architecture.md
T
2026-03-05 14:42:33 +03:00

2.2 KiB

Архитектура GUI

1. Состав

  • gui/main.py: entrypoint приложения.
  • gui/app_window.py: компоновка миксинов и базовой инфраструктуры.
  • gui/controllers/*: orchestration-логика.
  • gui/controllers/sections/*: построение UI-групп (Pipeline, Processing, Radar, Switches и т.д.).
  • gui/plotting/*: чистая логика B-scan расчетов и cache helpers.
  • gui/runtime/*: runtime history/constraint helpers.
  • gui/preprocess_dialog.py: окно последовательного захвата calibration/reference.

2. Mixin роли

  • AppWindowUiMixin: сборка виджетов и layout.
  • AppWindowConfigMixin: сборка RunConfigModel, live settings и лимиты устройства.
  • AppWindowPipelineMixin: старт/стоп процессов, polling ring readers, history lifecycle.
  • AppWindowPlotMixin: выбор режима отрисовки и рендер.
  • AppWindowPreprocessMixin: workflow для calibration/reference capture.
  • AppWindowSnapshotMixin: сохранение runtime snapshot.

3. Состояния AppWindow

Ключевые поля состояния:

  • readers: _raw_reader, _pre_reader, _result_reader
  • history: _raw_history, _pre_history, _result_history
  • bscan cache: _bscan_history_by_combo, _bscan_depth_axis_by_combo, _bscan_render_signature
  • single capture flags: _single_capture_*
  • radar limits: _radar_limits

4. UI composition

Секции строятся через builders в gui/controllers/sections:

  • build_pipeline_group
  • build_hardware_actions_group
  • build_data_actions_group
  • build_preprocess_summary_group
  • build_processing_group
  • build_radar_group
  • build_switch_group

5. Рекомендации по расширению GUI

  • Не добавлять тяжелую математику в mixin-файлы.
  • Для новых параметров processing mode:
    • добавить поле в live config,
    • добавить controls в processing_section,
    • добавить обработку в plotting/runtime helpers.