forked from M-Labs/thermostat
ctrl_panel: Remove MutexParameter
Use the standard ListParamenter instead, and hook up UI changes and sent commands elsewhere.
This commit is contained in:
parent
fb977982f8
commit
8b68ff7652
@ -7,42 +7,6 @@ from pyqtgraph.parametertree import (
|
|||||||
import pytec.gui.view.unitful
|
import pytec.gui.view.unitful
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
@ -89,6 +53,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
|
||||||
|
@ -29,7 +29,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"
|
||||||
@ -54,7 +54,6 @@
|
|||||||
-2,
|
-2,
|
||||||
2
|
2
|
||||||
],
|
],
|
||||||
"triggerOnShow": true,
|
|
||||||
"decimals": 6,
|
"decimals": 6,
|
||||||
"pinSiPrefix": "m",
|
"pinSiPrefix": "m",
|
||||||
"suffix": "A",
|
"suffix": "A",
|
||||||
@ -73,6 +72,7 @@
|
|||||||
"name": "target",
|
"name": "target",
|
||||||
"title": "Setpoint",
|
"title": "Setpoint",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
|
"visible": false,
|
||||||
"value": 25,
|
"value": 25,
|
||||||
"step": 0.1,
|
"step": 0.1,
|
||||||
"limits": [
|
"limits": [
|
||||||
|
@ -293,6 +293,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
if activater[1] == "ch":
|
if activater[1] == "ch":
|
||||||
activater[1] = ch
|
activater[1] = ch
|
||||||
await self.client.set_param(*activater)
|
await self.client.set_param(*activater)
|
||||||
|
else:
|
||||||
|
await self.client.set_param(
|
||||||
|
"pwm", ch, "i_set", inner_param.child("i_set").value()
|
||||||
|
)
|
||||||
|
|
||||||
@asyncSlot()
|
@asyncSlot()
|
||||||
async def pid_autotune_request(self, ch=0):
|
async def pid_autotune_request(self, ch=0):
|
||||||
|
Loading…
Reference in New Issue
Block a user