From 646452f55938c77f794d2e957a5991221df4a21f Mon Sep 17 00:00:00 2001 From: atse Date: Thu, 18 Jul 2024 13:38:46 +0800 Subject: [PATCH] ctrl_panel: Remove MutexParameter Use the standard ListParamenter instead, and hook up UI changes elsewhere. --- pytec/pytec/gui/view/ctrl_panel.py | 48 +++++++--------------------- pytec/pytec/gui/view/param_tree.json | 3 +- 2 files changed, 14 insertions(+), 37 deletions(-) diff --git a/pytec/pytec/gui/view/ctrl_panel.py b/pytec/pytec/gui/view/ctrl_panel.py index 5d138e1..bec6dba 100644 --- a/pytec/pytec/gui/view/ctrl_panel.py +++ b/pytec/pytec/gui/view/ctrl_panel.py @@ -6,42 +6,6 @@ from pyqtgraph.parametertree import ( ) -class MutexParameter(pTypes.ListParameter): - """ - Mutually exclusive parameter where only one of its children is visible at a time, list selectable. - - The ordering of the list items determines which children will be visible. - """ - - def __init__(self, **opts): - super().__init__(**opts) - - self.sigValueChanged.connect(self.show_chosen_child) - self.sigValueChanged.emit(self, self.opts["value"]) - - def _get_param_from_value(self, value): - if isinstance(self.opts["limits"], dict): - values_list = list(self.opts["limits"].values()) - else: - values_list = self.opts["limits"] - - return self.children()[values_list.index(value)] - - @pyqtSlot(object, object) - def show_chosen_child(self, value): - for param in self.children(): - param.hide() - - child_to_show = self._get_param_from_value(value.value()) - child_to_show.show() - - if child_to_show.opts.get("triggerOnShow", None): - child_to_show.sigValueChanged.emit(child_to_show, child_to_show.value()) - - -registerParameterType("mutex", MutexParameter) - - def set_tree_label_tips(tree): for item in tree.listAllItems(): p = item.param @@ -88,6 +52,18 @@ class CtrlPanel(QObject): for handle in sigActivated_handles[ch]: param.child(*handle[0]).sigActivated.connect(handle[1]) + param.child("output", "control_method").sigValueChanged.connect( + lambda param, value: param.child("i_set").show( + value == "constant_current" + ) + ) + + param.child("output", "control_method").sigValueChanged.connect( + lambda param, value: param.child("target").show( + value == "temperature_pid" + ) + ) + def _setValue(self, value, blockSignal=None): """ Implement 'lock' mechanism for Parameter Type diff --git a/pytec/pytec/gui/view/param_tree.json b/pytec/pytec/gui/view/param_tree.json index 9075d4d..79bbbbe 100644 --- a/pytec/pytec/gui/view/param_tree.json +++ b/pytec/pytec/gui/view/param_tree.json @@ -28,7 +28,7 @@ { "name": "control_method", "title": "Control Method", - "type": "mutex", + "type": "list", "limits": { "Constant Current": "constant_current", "Temperature PID": "temperature_pid" @@ -68,6 +68,7 @@ "name": "target", "title": "Setpoint (°C)", "type": "float", + "visible": false, "value": 25, "step": 0.1, "limits": [