Compare commits

...

1 Commits

Author SHA1 Message Date
d08da8bbb3 ctrl_panel: Code cleanup
* Remove unnecessary duplication of `THERMOSTAT_PARAMETERS`

* i -> ch

* Separate ParameterTree and Parameter initiation

* Remove extra "channel" option to root parameters, as the "value"
option is already the channel number
2025-03-31 16:05:28 +08:00

View File

@ -63,36 +63,33 @@ class CtrlPanel(QObject):
self.trees_ui = trees_ui
self.NUM_CHANNELS = len(trees_ui)
self.THERMOSTAT_PARAMETERS = [param_tree for i in range(self.NUM_CHANNELS)]
self.params = [
Parameter.create(
name=f"Thermostat Channel {ch} Parameters",
type="group",
value=ch,
children=self.THERMOSTAT_PARAMETERS[ch],
children=param_tree,
)
for ch in range(self.NUM_CHANNELS)
]
for i, param in enumerate(self.params):
param.channel = i
for i, tree in enumerate(self.trees_ui):
tree.setHeaderHidden(True)
tree.setParameters(self.params[i], showTop=False)
self.params[i].setValue = self._setValue
self.params[i].sigTreeStateChanged.connect(self.send_command)
self.params[i].child("Save to flash").sigActivated.connect(
partial(self.save_settings, i)
for ch, param in enumerate(self.params):
param.setValue = self._setValue
param.sigTreeStateChanged.connect(self.send_command)
param.child("Save to flash").sigActivated.connect(
partial(self.save_settings, ch)
)
self.params[i].child("Load from flash").sigActivated.connect(
partial(self.load_settings, i)
param.child("Load from flash").sigActivated.connect(
partial(self.load_settings, ch)
)
param.child("PID Config", "PID Auto Tune", "Run").sigActivated.connect(
partial(self.pid_auto_tune_request, ch)
)
self.params[i].child(
"PID Config", "PID Auto Tune", "Run"
).sigActivated.connect(partial(self.pid_auto_tune_request, i))
self.thermostat.pid_update.connect(self.update_pid)
self.thermostat.report_update.connect(self.update_report)
@ -133,7 +130,7 @@ class CtrlPanel(QObject):
@asyncSlot(object, object)
async def send_command(self, param, changes):
"""Translates parameter tree changes into thermostat set_param calls"""
ch = param.channel
ch = param.value()
for inner_param, change, data in changes:
if change == "value":