Fix loading all channel settings would bring up 2 info boxes

This commit is contained in:
atse 2024-08-27 13:17:25 +08:00
parent 99e1574886
commit c2fbc7029c
4 changed files with 31 additions and 36 deletions

View File

@ -130,18 +130,12 @@ class Thermostat(QObject, metaclass=PropertyMeta):
return await self._client.ipv4() return await self._client.ipv4()
@asyncSlot() @asyncSlot()
async def save_cfg(self, ch): async def save_cfg(self, ch=""):
await self._client.save_config(ch) await self._client.save_config(ch)
self.info_box_trigger.emit(
"Config saved", f"Channel {ch} Config has been saved from flash."
)
@asyncSlot() @asyncSlot()
async def load_cfg(self, ch): async def load_cfg(self, ch=""):
await self._client.load_config(ch) await self._client.load_config(ch)
self.info_box_trigger.emit(
"Config loaded", f"Channel {ch} Config has been loaded from flash."
)
async def dfu(self): async def dfu(self):
await self._client.dfu() await self._client.dfu()

View File

@ -52,6 +52,7 @@ class CtrlPanel(QObject):
self, self,
thermostat, thermostat,
autotuners, autotuners,
info_box,
trees_ui, trees_ui,
param_tree, param_tree,
sigActivated_handles, sigActivated_handles,
@ -61,6 +62,7 @@ class CtrlPanel(QObject):
self.thermostat = thermostat self.thermostat = thermostat
self.autotuners = autotuners self.autotuners = autotuners
self.info_box = info_box
self.trees_ui = trees_ui self.trees_ui = trees_ui
self.NUM_CHANNELS = len(trees_ui) self.NUM_CHANNELS = len(trees_ui)
@ -86,10 +88,10 @@ class CtrlPanel(QObject):
self.params[i].sigTreeStateChanged.connect(self.send_command) self.params[i].sigTreeStateChanged.connect(self.send_command)
self.params[i].child("Save to flash").sigActivated.connect( self.params[i].child("Save to flash").sigActivated.connect(
partial(self.thermostat.save_cfg, i) partial(self.save_settings, i)
) )
self.params[i].child("Load from flash").sigActivated.connect( self.params[i].child("Load from flash").sigActivated.connect(
partial(self.thermostat.load_cfg, i) partial(self.load_settings, i)
) )
for handle in sigActivated_handles[i]: for handle in sigActivated_handles[i]:
self.params[i].child(*handle[0]).sigActivated.connect(handle[1]) self.params[i].child(*handle[0]).sigActivated.connect(handle[1])
@ -253,3 +255,19 @@ class CtrlPanel(QObject):
self.params[channel].child( self.params[channel].child(
"Thermistor Config", "Postfilter Rate" "Thermistor Config", "Postfilter Rate"
).setValue(postfilter_params["rate"]) ).setValue(postfilter_params["rate"])
@asyncSlot(int)
async def load_settings(self, ch):
await self.thermostat.load_cfg(ch)
self.info_box.display_info_box(
"Config loaded", f"Channel {ch} Config has been loaded from flash."
)
@asyncSlot(int)
async def save_settings(self, ch):
await self.thermostat.save_cfg(ch)
self.info_box.display_info_box(
"Config saved", f"Channel {ch} Config has been saved from flash."
)

View File

@ -8,9 +8,6 @@ from pytec.gui.view.net_settings_input_diag import NetSettingsInputDiag
class ThermostatCtrlMenu(QtWidgets.QMenu): class ThermostatCtrlMenu(QtWidgets.QMenu):
reset_act = pyqtSignal(bool) reset_act = pyqtSignal(bool)
load_cfg_act = pyqtSignal(int)
save_cfg_act = pyqtSignal(int)
def __init__(self, thermostat, style): def __init__(self, thermostat, style):
super().__init__() super().__init__()
self._thermostat = thermostat self._thermostat = thermostat
@ -69,10 +66,10 @@ class ThermostatCtrlMenu(QtWidgets.QMenu):
self.actionnet_settings_input_diag.triggered.connect(self.net_settings_request) self.actionnet_settings_input_diag.triggered.connect(self.net_settings_request)
self.addAction(self.actionnet_settings_input_diag) self.addAction(self.actionnet_settings_input_diag)
@pyqtSlot(bool) @asyncSlot(bool)
def load(_): async def load(_):
self.load_cfg_act.emit(0) await self._thermostat.load_cfg()
self.load_cfg_act.emit(1)
loaded = QtWidgets.QMessageBox(self) loaded = QtWidgets.QMessageBox(self)
loaded.setWindowTitle("Config loaded") loaded.setWindowTitle("Config loaded")
loaded.setText("All channel configs have been loaded from flash.") loaded.setText("All channel configs have been loaded from flash.")
@ -83,10 +80,10 @@ class ThermostatCtrlMenu(QtWidgets.QMenu):
self.actionLoad_all_configs.triggered.connect(load) self.actionLoad_all_configs.triggered.connect(load)
self.addAction(self.actionLoad_all_configs) self.addAction(self.actionLoad_all_configs)
@pyqtSlot(bool) @asyncSlot(bool)
def save(_): async def save(_):
self.save_cfg_act.emit(0) await self._thermostat.save_cfg()
self.save_cfg_act.emit(1)
saved = QtWidgets.QMessageBox(self) saved = QtWidgets.QMessageBox(self)
saved.setWindowTitle("Config saved") saved.setWindowTitle("Config saved")
saved.setText("All channel configs have been saved to flash.") saved.setText("All channel configs have been saved to flash.")

View File

@ -90,11 +90,11 @@ class MainWindow(QtWidgets.QMainWindow):
] ]
for ch in range(self.NUM_CHANNELS) for ch in range(self.NUM_CHANNELS)
] ]
self.thermostat.info_box_trigger.connect(self.info_box.display_info_box)
self.ctrl_panel_view = CtrlPanel( self.ctrl_panel_view = CtrlPanel(
self.thermostat, self.thermostat,
self.autotuners, self.autotuners,
self.info_box,
[self.ch0_tree, self.ch1_tree], [self.ch0_tree, self.ch1_tree],
get_ctrl_panel_config(args), get_ctrl_panel_config(args),
param_tree_sigActivated_handles, param_tree_sigActivated_handles,
@ -139,8 +139,6 @@ class MainWindow(QtWidgets.QMainWindow):
self.thermostat_ctrl_menu = ThermostatCtrlMenu(self.thermostat, self.style()) self.thermostat_ctrl_menu = ThermostatCtrlMenu(self.thermostat, self.style())
self.thermostat_ctrl_menu.reset_act.connect(self.reset_request) self.thermostat_ctrl_menu.reset_act.connect(self.reset_request)
self.thermostat_ctrl_menu.save_cfg_act.connect(self.save_cfg_request)
self.thermostat_ctrl_menu.load_cfg_act.connect(self.load_cfg_request)
self.thermostat.hw_rev_update.connect(self.thermostat_ctrl_menu.hw_rev) self.thermostat.hw_rev_update.connect(self.thermostat_ctrl_menu.hw_rev)
self.thermostat_settings.setMenu(self.thermostat_ctrl_menu) self.thermostat_settings.setMenu(self.thermostat_ctrl_menu)
@ -292,18 +290,6 @@ class MainWindow(QtWidgets.QMainWindow):
self.loading_spinner.start() self.loading_spinner.start()
self.loading_spinner.show() self.loading_spinner.show()
@asyncSlot(int)
async def save_cfg_request(self, ch):
assert self.thermostat.connected()
await self.thermostat.save_cfg(str(ch))
@asyncSlot(int)
async def load_cfg_request(self, ch):
assert self.thermostat.connected()
await self.thermostat.load_cfg(str(ch))
@asyncSlot(bool) @asyncSlot(bool)
async def reset_request(self, _): async def reset_request(self, _):
assert self.thermostat.connected() assert self.thermostat.connected()