forked from M-Labs/thermostat
ctrl_panel: Remove MutexParameter
Use the standard ListParamenter instead, and hook up UI changes elsewhere.
This commit is contained in:
parent
282f3d1e82
commit
d7defecaaa
@ -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):
|
def set_tree_label_tips(tree):
|
||||||
for item in tree.listAllItems():
|
for item in tree.listAllItems():
|
||||||
p = item.param
|
p = item.param
|
||||||
@ -88,6 +52,18 @@ class CtrlPanel(QObject):
|
|||||||
for handle in sigActivated_handles[ch]:
|
for handle in sigActivated_handles[ch]:
|
||||||
param.child(*handle[0]).sigActivated.connect(handle[1])
|
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):
|
def _setValue(self, value, blockSignal=None):
|
||||||
"""
|
"""
|
||||||
Implement 'lock' mechanism for Parameter Type
|
Implement 'lock' mechanism for Parameter Type
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
{
|
{
|
||||||
"name": "control_method",
|
"name": "control_method",
|
||||||
"title": "Control Method",
|
"title": "Control Method",
|
||||||
"type": "mutex",
|
"type": "list",
|
||||||
"limits": {
|
"limits": {
|
||||||
"Constant Current": "constant_current",
|
"Constant Current": "constant_current",
|
||||||
"Temperature PID": "temperature_pid"
|
"Temperature PID": "temperature_pid"
|
||||||
@ -68,6 +68,7 @@
|
|||||||
"name": "target",
|
"name": "target",
|
||||||
"title": "Setpoint (°C)",
|
"title": "Setpoint (°C)",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
|
"visible": false,
|
||||||
"value": 25,
|
"value": 25,
|
||||||
"step": 0.1,
|
"step": 0.1,
|
||||||
"limits": [
|
"limits": [
|
||||||
|
Loading…
Reference in New Issue
Block a user