diff --git a/pytec/pytec/gui/view/ctrl_panel.py b/pytec/pytec/gui/view/ctrl_panel.py index c42330a..211bfef 100644 --- a/pytec/pytec/gui/view/ctrl_panel.py +++ b/pytec/pytec/gui/view/ctrl_panel.py @@ -7,42 +7,6 @@ from pyqtgraph.parametertree import ( import pytec.gui.view.lockable_unit -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 @@ -89,6 +53,25 @@ class CtrlPanel(QObject): for handle in sigActivated_handles[ch]: param.child(*handle[0]).sigActivated.connect(handle[1]) + def _indicate_usage(param, control_method="constant_current"): + for item in param.child("i_set").items: + is_constant_current = control_method == "constant_current" + font = item.font(0) + font.setUnderline(is_constant_current) + font.setBold(is_constant_current) + item.setFont(0, font) + for item in param.child("target").items: + is_temperature_pid = control_method == "temperature_pid" + font = item.font(0) + font.setUnderline(is_temperature_pid) + font.setBold(is_temperature_pid) + item.setFont(0, font) + + param.child("output", "control_method").sigValueChanged.connect( + _indicate_usage + ) + _indicate_usage(param.child("output", "control_method")) + 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 204633f..0e6a01c 100644 --- a/pytec/pytec/gui/view/param_tree.json +++ b/pytec/pytec/gui/view/param_tree.json @@ -29,7 +29,7 @@ { "name": "control_method", "title": "Control Method", - "type": "mutex", + "type": "list", "limits": { "Constant Current": "constant_current", "Temperature PID": "temperature_pid" @@ -54,7 +54,6 @@ -2, 2 ], - "triggerOnShow": true, "decimals": 6, "pinSiPrefix": "m", "suffix": "A", diff --git a/pytec/tec_qt.py b/pytec/tec_qt.py index af29936..ddf4cbe 100644 --- a/pytec/tec_qt.py +++ b/pytec/tec_qt.py @@ -293,6 +293,10 @@ class MainWindow(QtWidgets.QMainWindow): if activater[1] == "ch": activater[1] = ch await self.client.set_param(*activater) + else: + await self.client.set_param( + "pwm", ch, "i_set", inner_param.child("i_set").value() + ) @asyncSlot() async def pid_autotune_request(self, ch=0):