2.2 KiB
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_groupbuild_hardware_actions_groupbuild_data_actions_groupbuild_preprocess_summary_groupbuild_processing_groupbuild_radar_groupbuild_switch_group
5. Рекомендации по расширению GUI
- Не добавлять тяжелую математику в mixin-файлы.
- Для новых параметров processing mode:
- добавить поле в live config,
- добавить controls в
processing_section, - добавить обработку в plotting/runtime helpers.