Skip to content

Commit

Permalink
use AutolockStatus for GUI
Browse files Browse the repository at this point in the history
  • Loading branch information
bleykauf committed Sep 12, 2024
1 parent 35355a1 commit 310f8dd
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 31 deletions.
37 changes: 15 additions & 22 deletions linien-gui/linien_gui/ui/locking_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
from linien_gui.ui.spin_box import CustomSpinBox
from linien_gui.utils import get_linien_app_instance, param2ui
from PyQt5 import QtCore, QtWidgets, uic
from PyQt5.QtCore import pyqtSignal


class LockStatusWidget(QtWidgets.QWidget):
Expand Down Expand Up @@ -100,8 +99,6 @@ class LockingPanel(QtWidgets.QWidget):
lockStatusLabel: QtWidgets.QLabel
stopLockPushButton: QtWidgets.QPushButton

autolock_selection_signal = pyqtSignal(bool)

def __init__(self, *args, **kwargs):
super(LockingPanel, self).__init__(*args, **kwargs)
uic.loadUi(UI_PATH / "locking_panel.ui", self)
Expand All @@ -125,21 +122,15 @@ def __init__(self, *args, **kwargs):
self.autolockModePreferenceComboBox.currentIndexChanged.connect(
self.on_autolock_mode_preference_changed
)
self.autolock_selection_signal.connect(
self.on_autolock_selection_status_changed
)
self.autolockSelectionActivedWidget.setVisible(False)
self.autolockSelectionNotActivedWidget.setVisible(True)

def ready(self) -> None:
self.autolock_selection_signal.connect(
self.app.main_window.plotWidget.on_autolock_selection_changed
)

def on_connection_established(self):
self.parameters = self.app.parameters
self.control = self.app.control

self.parameters.autolock_status.add_callback(self.on_autolock_status_changed)

param2ui(self.parameters.p, self.kpSpinBox)
param2ui(self.parameters.i, self.kiSpinBox)
param2ui(self.parameters.d, self.kdSpinBox)
Expand All @@ -151,7 +142,7 @@ def on_connection_established(self):
)
param2ui(self.parameters.pid_on_slow_strength, self.pIDOnSlowStrengthSpinBox)

self.parameters.autolock_status.add_callback(self.on_lock_status_changed)
self.parameters.autolock_status.add_callback(self.on_autolock_status_changed)

param2ui(self.parameters.target_slope_rising, self.slopeRisingRadioButton)
param2ui(
Expand All @@ -164,21 +155,23 @@ def on_connection_established(self):
self.autolockModePreferenceComboBox,
)

def on_lock_status_changed(self, status: AutolockStatus) -> None:
def on_autolock_status_changed(self, status: AutolockStatus) -> None:
match status:
case AutolockStatus.FAILED | AutolockStatus.LOCKED | AutolockStatus.LOCKING:
self.lockControlTabWidget.hide()
case _:
case AutolockStatus.STOPPED:
self.lockControlTabWidget.show()
case _:
self.lockControlTabWidget.hide()
self.lockFailedWidget.setVisible(status == AutolockStatus.FAILED)
self.autolockSelectionActivedWidget.setVisible(
status == AutolockStatus.SELECTING
)
self.autolockSelectionNotActivedWidget.setVisible(
status != AutolockStatus.SELECTING
)

def on_slow_pid_changed(self, _) -> None:
self.slowPIDGroupBox.setVisible(self.parameters.pid_on_slow_enabled.value)

def on_autolock_selection_status_changed(self, value: bool) -> None:
self.autolockSelectionActivedWidget.setVisible(value)
self.autolockSelectionNotActivedWidget.setVisible(not value)

def on_kp_changed(self):
self.parameters.p.value = self.kpSpinBox.value()
self.control.write_registers()
Expand Down Expand Up @@ -214,10 +207,10 @@ def pid_on_slow_strength_changed(self):
self.control.write_registers()

def start_autolock_selection(self):
self.autolock_selection_signal.emit(True)
self.parameters.autolock_status.value = AutolockStatus.SELECTING

def stop_autolock_selection(self):
self.autolock_selection_signal.emit(False)
self.parameters.autolock_status.value = AutolockStatus.STOPPED

def reset_lock_failed(self):
self.parameters.autolock_status.value = AutolockStatus.STOPPED
14 changes: 5 additions & 9 deletions linien-gui/linien_gui/ui/plot_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from linien_common.common import (
DECIMATION,
N_POINTS,
AutolockStatus,
check_plot_data,
combine_error_signal,
get_lock_point,
Expand Down Expand Up @@ -119,7 +120,6 @@ def __init__(self, *args, **kwargs):
self.autolock_ref_spectrum = None
self.selection_running = False
self.selection_boundaries = None
self.autolock_selection_running = False
self.optimization_selection_running = False

self.getAxis("bottom").enableAutoSIPrefix(False)
Expand Down Expand Up @@ -244,6 +244,7 @@ def on_connection_established(self):
self.parameters = self.app.parameters
self.control = self.app.control

self.parameters.autolock_status.add_callback(self.on_autolock_status_changed)
self.control_signal_history_data = self.parameters.control_signal_history.value
self.monitor_signal_history_data = self.parameters.monitor_signal_history.value
self.parameters.to_plot.add_callback(self.on_new_plot_data_received)
Expand Down Expand Up @@ -307,9 +308,8 @@ def mouseReleaseEvent(self, event):
if xdiff / xmax < 0.01: # it was a click
pass
else: # it was a selection
if self.autolock_selection_running:
if self.parameters.autolock_status == AutolockStatus.SELECTING:
last_combined_error_signal = self.last_plot_data[2]
self.autolock_selection_running = False
self.control.exposed_start_autolock(
# we pickle it here because otherwise a netref is
# transmitted which blocks the autolock
Expand Down Expand Up @@ -366,21 +366,17 @@ def on_plot_settings_changed(self, _) -> None:
)
)

def on_autolock_selection_changed(self, value: bool) -> None:
if value:
self.autolock_selection_running = True
self.optimization_selection_running = False
def on_autolock_status_changed(self, status: AutolockStatus) -> None:
if status == AutolockStatus.SELECTING:
self.enable_area_selection(selectable_width=0.99)
self.pause_plot()
else:
self.autolock_selection_running = False
self.disable_area_selection()
self.resume_plot_and_clear_cache()

def on_optimization_selection_changed(self, value: bool) -> None:
if value:
self.optimization_selection_running = True
self.autolock_selection_running = False
self.enable_area_selection(selectable_width=0.75)
self.pause_plot()
else:
Expand Down

0 comments on commit 310f8dd

Please sign in to comment.