working version
This commit is contained in:
@@ -88,6 +88,7 @@ class AppWindowLiveProcessingMixin:
|
||||
gpr_background_subtract_enabled=gpr_background_enabled,
|
||||
gpr_background_mean_count=gpr_background_mean_count,
|
||||
gpr_remove_sidelobe_objects_enabled=bool(self._gpr_remove_sidelobe_objects_enabled.isChecked()),
|
||||
gpr_imaging_plane_y_m=float(self._gpr_imaging_plane_y_m.value()),
|
||||
reprocess_current_result=bool(reprocess_current_result),
|
||||
history_command_seq=int(self._history_command_seq),
|
||||
history_command=str(history_command),
|
||||
@@ -213,6 +214,7 @@ class AppWindowLiveProcessingMixin:
|
||||
"Processing mode selected: pass_through "
|
||||
f"(show_magnitude={self._show_magnitude_checkbox.isChecked()}, "
|
||||
f"show_phase={self._show_phase_checkbox.isChecked()}, "
|
||||
f"combos={self._pass_through_combo_filter_input.text().strip() or '<all>'}, "
|
||||
f"fixed_y={self._pass_through_fixed_y_enabled.isChecked()}, "
|
||||
f"y_range={self._pass_through_y_min_db.value():g}..{self._pass_through_y_max_db.value():g} dB)"
|
||||
)
|
||||
@@ -239,6 +241,7 @@ class AppWindowLiveProcessingMixin:
|
||||
f"background_subtract={self._gpr_background_subtract_enabled.isChecked()}, "
|
||||
f"mean_count={self._gpr_background_mean_count.value()}, "
|
||||
f"remove_sidelobes={self._gpr_remove_sidelobe_objects_enabled.isChecked()}, "
|
||||
f"imaging_plane_y={self._gpr_imaging_plane_y_m.value():g} m, "
|
||||
f"render_mode={self._gpr_render_mode.currentText()}, "
|
||||
f"min_score={self._gpr_min_visible_score.value():g}, "
|
||||
f"max_draw={self._gpr_max_detected_objects_to_draw.value()}, "
|
||||
|
||||
@@ -235,6 +235,7 @@ class AppWindowConfigProfileIOMixin:
|
||||
self._processing_mode,
|
||||
self._show_magnitude_checkbox,
|
||||
self._show_phase_checkbox,
|
||||
self._pass_through_combo_filter_input,
|
||||
self._pass_through_fixed_y_enabled,
|
||||
self._pass_through_y_min_db,
|
||||
self._pass_through_y_max_db,
|
||||
@@ -262,6 +263,7 @@ class AppWindowConfigProfileIOMixin:
|
||||
self._gpr_background_subtract_enabled,
|
||||
self._gpr_background_mean_count,
|
||||
self._gpr_remove_sidelobe_objects_enabled,
|
||||
self._gpr_imaging_plane_y_m,
|
||||
self._gpr_render_mode,
|
||||
self._gpr_min_visible_score,
|
||||
self._gpr_visible_x_min_m,
|
||||
@@ -378,6 +380,7 @@ class AppWindowConfigProfileIOMixin:
|
||||
self._set_combo_current_text(self._processing_mode, gui_state.processing.selected_mode)
|
||||
self._show_magnitude_checkbox.setChecked(bool(gui_state.processing.pass_through.show_magnitude))
|
||||
self._show_phase_checkbox.setChecked(bool(gui_state.processing.pass_through.show_phase))
|
||||
self._pass_through_combo_filter_input.setText(str(gui_state.processing.pass_through.combo_filter))
|
||||
self._pass_through_fixed_y_enabled.setChecked(bool(gui_state.processing.pass_through.fixed_y_enabled))
|
||||
self._pass_through_y_min_db.setValue(float(gui_state.processing.pass_through.y_min_db))
|
||||
self._pass_through_y_max_db.setValue(float(gui_state.processing.pass_through.y_max_db))
|
||||
@@ -423,6 +426,7 @@ class AppWindowConfigProfileIOMixin:
|
||||
self._gpr_remove_sidelobe_objects_enabled.setChecked(
|
||||
bool(gui_state.processing.gpr.remove_sidelobe_objects_enabled)
|
||||
)
|
||||
self._gpr_imaging_plane_y_m.setValue(float(gui_state.processing.gpr.imaging_plane_y_m))
|
||||
self._set_combo_current_text(self._gpr_render_mode, gui_state.processing.gpr.render_mode)
|
||||
self._gpr_min_visible_score.setValue(float(gui_state.processing.gpr.min_visible_score))
|
||||
self._gpr_visible_x_min_m.setValue(float(gui_state.processing.gpr.visible_x_min_m))
|
||||
|
||||
@@ -65,41 +65,49 @@ class AppWindowConfigStateBuildersMixin:
|
||||
env[key] = value
|
||||
return env
|
||||
|
||||
@staticmethod
|
||||
def _parse_geometry_line_coordinates(parts: list[str]) -> tuple[float, float, float]:
|
||||
"""Parse 1/2/3 trailing coordinate fields into (x, y, z); missing axes default to 0."""
|
||||
x_m = float(parts[0])
|
||||
y_m = float(parts[1]) if len(parts) >= 2 else 0.0
|
||||
z_m = float(parts[2]) if len(parts) >= 3 else 0.0
|
||||
return x_m, y_m, z_m
|
||||
|
||||
@staticmethod
|
||||
def _parse_gpr_tx_geometry_text(text: str) -> list[GprTxGeometryModel]:
|
||||
"""Parse line-based Tx geometry editor text."""
|
||||
"""Parse line-based Tx geometry editor text: `output_pos x_m [y_m] [z_m]`."""
|
||||
entries: list[GprTxGeometryModel] = []
|
||||
for line_number, raw_line in enumerate(text.splitlines(), start=1):
|
||||
line = raw_line.strip()
|
||||
if not line:
|
||||
continue
|
||||
parts = line.split()
|
||||
if len(parts) != 2:
|
||||
raise ValueError(f"Invalid Tx geometry line {line_number}: expected `output_pos x_m`")
|
||||
entries.append(
|
||||
GprTxGeometryModel(
|
||||
output_pos=int(parts[0]),
|
||||
x_m=float(parts[1]),
|
||||
if len(parts) < 2 or len(parts) > 4:
|
||||
raise ValueError(
|
||||
f"Invalid Tx geometry line {line_number}: expected `output_pos x_m [y_m] [z_m]`"
|
||||
)
|
||||
x_m, y_m, z_m = AppWindowConfigStateBuildersMixin._parse_geometry_line_coordinates(parts[1:])
|
||||
entries.append(
|
||||
GprTxGeometryModel(output_pos=int(parts[0]), x_m=x_m, y_m=y_m, z_m=z_m)
|
||||
)
|
||||
return entries
|
||||
|
||||
@staticmethod
|
||||
def _parse_gpr_rx_geometry_text(text: str) -> list[GprRxGeometryModel]:
|
||||
"""Parse line-based Rx geometry editor text."""
|
||||
"""Parse line-based Rx geometry editor text: `input_pos x_m [y_m] [z_m]`."""
|
||||
entries: list[GprRxGeometryModel] = []
|
||||
for line_number, raw_line in enumerate(text.splitlines(), start=1):
|
||||
line = raw_line.strip()
|
||||
if not line:
|
||||
continue
|
||||
parts = line.split()
|
||||
if len(parts) != 2:
|
||||
raise ValueError(f"Invalid Rx geometry line {line_number}: expected `input_pos x_m`")
|
||||
entries.append(
|
||||
GprRxGeometryModel(
|
||||
input_pos=int(parts[0]),
|
||||
x_m=float(parts[1]),
|
||||
if len(parts) < 2 or len(parts) > 4:
|
||||
raise ValueError(
|
||||
f"Invalid Rx geometry line {line_number}: expected `input_pos x_m [y_m] [z_m]`"
|
||||
)
|
||||
x_m, y_m, z_m = AppWindowConfigStateBuildersMixin._parse_geometry_line_coordinates(parts[1:])
|
||||
entries.append(
|
||||
GprRxGeometryModel(input_pos=int(parts[0]), x_m=x_m, y_m=y_m, z_m=z_m)
|
||||
)
|
||||
return entries
|
||||
|
||||
@@ -175,6 +183,7 @@ class AppWindowConfigStateBuildersMixin:
|
||||
pass_through=GuiPassThroughStateModel(
|
||||
show_magnitude=True,
|
||||
show_phase=True,
|
||||
combo_filter="",
|
||||
fixed_y_enabled=False,
|
||||
y_min_db=-100.0,
|
||||
y_max_db=0.0,
|
||||
@@ -203,6 +212,7 @@ class AppWindowConfigStateBuildersMixin:
|
||||
background_subtract_enabled=True,
|
||||
background_mean_count=10,
|
||||
remove_sidelobe_objects_enabled=True,
|
||||
imaging_plane_y_m=0.0,
|
||||
render_mode="heatmap",
|
||||
min_visible_score=0.0,
|
||||
visible_x_min_m=default_gpr_x_min_m,
|
||||
@@ -287,6 +297,7 @@ class AppWindowConfigStateBuildersMixin:
|
||||
pass_through=GuiPassThroughStateModel(
|
||||
show_magnitude=bool(self._show_magnitude_checkbox.isChecked()),
|
||||
show_phase=bool(self._show_phase_checkbox.isChecked()),
|
||||
combo_filter=self._pass_through_combo_filter_input.text().strip(),
|
||||
fixed_y_enabled=bool(self._pass_through_fixed_y_enabled.isChecked()),
|
||||
y_min_db=float(self._pass_through_y_min_db.value()),
|
||||
y_max_db=float(self._pass_through_y_max_db.value()),
|
||||
@@ -315,6 +326,7 @@ class AppWindowConfigStateBuildersMixin:
|
||||
background_subtract_enabled=bool(self._gpr_background_subtract_enabled.isChecked()),
|
||||
background_mean_count=int(self._gpr_background_mean_count.value()),
|
||||
remove_sidelobe_objects_enabled=bool(self._gpr_remove_sidelobe_objects_enabled.isChecked()),
|
||||
imaging_plane_y_m=float(self._gpr_imaging_plane_y_m.value()),
|
||||
render_mode=self._gpr_render_mode.currentText(),
|
||||
min_visible_score=float(self._gpr_min_visible_score.value()),
|
||||
visible_x_min_m=float(self._gpr_visible_x_min_m.value()),
|
||||
|
||||
Reference in New Issue
Block a user