sn9000 support

This commit is contained in:
AYZEN
2026-05-20 16:20:34 +03:00
parent ae7ea9f1f9
commit 5b480f1b55
18 changed files with 854 additions and 66 deletions
@@ -33,10 +33,10 @@ class AppWindowConfigProfileIOMixin:
def _set_combo_selection_mode(self, mode: str) -> None:
"""Highlight current combo mode and enable only the relevant editors."""
if self._is_multi_device_model_selected():
if self._is_matrix_radar_model_selected():
self._run_combos_select_button.setChecked(True)
self._single_combo_select_button.setChecked(False)
self._combos_text.setText(self._fixed_multi_combo_text())
self._combos_text.setText(self._fixed_matrix_radar_combo_text())
self._combos_text.setEnabled(False)
self._single_combo_output.setEnabled(True)
self._single_combo_input.setEnabled(True)
@@ -53,15 +53,15 @@ class AppWindowConfigProfileIOMixin:
self._run_combos_select_button.setEnabled(True)
self._single_combo_select_button.setEnabled(True)
def _is_multi_device_model_selected(self) -> bool:
"""Return whether the loaded config targets LibreVNA multi-device acquisition."""
return bool(self._defaults_config.is_multi_device)
def _is_matrix_radar_model_selected(self) -> bool:
"""Return whether the loaded config targets a matrix-mode radar acquisition."""
return bool(self._defaults_config.is_matrix_radar)
def _fixed_multi_combo_text(self) -> str:
"""Return the canonical virtual combo matrix shown for multi-device mode."""
def _fixed_matrix_radar_combo_text(self) -> str:
"""Return the canonical virtual combo matrix shown for matrix-mode radars."""
return ",".join(
f"{int(combo.input)}:{int(combo.output)}"
for combo in RunConfigModel.build_multi_device_virtual_combos()
for combo in RunConfigModel.build_matrix_radar_virtual_combos()
)
def _sync_pass_through_y_controls(self) -> None:
@@ -114,10 +114,10 @@ class AppWindowConfigStateBuildersMixin:
@staticmethod
def _format_combos_text_from_config(config: RunConfigModel) -> str:
"""Render configured combos for UI text editor, keeping full matrix as empty."""
if config.is_multi_device:
if config.is_matrix_radar:
return ",".join(
f"{int(combo.input)}:{int(combo.output)}"
for combo in RunConfigModel.build_multi_device_virtual_combos()
for combo in RunConfigModel.build_matrix_radar_virtual_combos()
)
combos = list(config.combos)
full_combos = config.build_full_combos(config.input_switch.positions, config.output_switch.positions)
@@ -285,14 +285,14 @@ class AppWindowConfigStateBuildersMixin:
switches=GuiSwitchStateModel(
combo_mode=(
"text"
if self._is_multi_device_model_selected()
if self._is_matrix_radar_model_selected()
else "single"
if self._single_combo_select_button.isChecked()
else "text"
),
combos_text=(
self._fixed_multi_combo_text()
if self._is_multi_device_model_selected()
self._fixed_matrix_radar_combo_text()
if self._is_matrix_radar_model_selected()
else self._combos_text.text().strip()
),
single_input=self._single_combo_input.text().strip(),
@@ -312,10 +312,10 @@ class AppWindowBscanPlotMixin:
return display_key
def _requested_bscan_display_key(self) -> tuple[int, int] | None:
"""Return the multi-device B-scan display combo requested by the GUI."""
"""Return the matrix-radar B-scan display combo requested by the GUI."""
if not (
hasattr(self, "_is_multi_device_model_selected")
and self._is_multi_device_model_selected()
hasattr(self, "_is_matrix_radar_model_selected")
and self._is_matrix_radar_model_selected()
and hasattr(self, "_single_combo_input")
and hasattr(self, "_single_combo_output")
):