From 9c566412ae0e2b23d78b6b52e68ff084b8a25bc4 Mon Sep 17 00:00:00 2001 From: CPD Date: Mon, 17 Mar 2025 15:09:29 +0100 Subject: [PATCH] Add dedicated update methods --- cpdctrl_gui/ui/widgets/led_script.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/cpdctrl_gui/ui/widgets/led_script.py b/cpdctrl_gui/ui/widgets/led_script.py index ea1f050..8e5357d 100644 --- a/cpdctrl_gui/ui/widgets/led_script.py +++ b/cpdctrl_gui/ui/widgets/led_script.py @@ -8,7 +8,7 @@ import logging log = logging.getLogger(__name__) import numpy as np -from cpdctrl.led_script import LedScript +from cpdctrl.led_script import LedScript, InvalidScriptUpdate timedelta = [("d", 24*3600), ("h", 3600), ("m", 60), ("s", 1)] def duration_to_string(duration: float) -> str: @@ -126,12 +126,23 @@ class LedScriptTableModel(QAbstractTableModel): def setData(self, index: QModelIndex, value, role: int): if role == Qt.ItemDataRole.EditRole: - newscript = self.led_script.script.copy() - newscript[self.indices[index.column()]][index.row()] = value + # newscript = self.led_script.script.copy() + # newscript[self.indices[index.column()]][index.row()] = value try: - log.info(f"Updating script from {self.led_script.script} to {newscript}") - self.led_script.update_from_script(newscript) - except ValueError as e: + led = self.led_script.script["led"][index.row()] + dt = self.led_script.script["dt"][index.row()] + idx_name = self.indices[index.column()] + if idx_name == 'led': + led = int(value) + elif idx_name == 'dt': + dt = float(value) + else: + raise InvalidScriptUpdate(f"Invalid script update: column '{idx_name}' invalid, can only update 'dt' and 'led'") + + log.info(f"Updating script row {index.row()+1} field '{idx_name}' with value '{value}'") + self.led_script.update_script_set_row(index.row(), dt, led) + except InvalidScriptUpdate as e: + log.error("Invalid script update") raise e # return False self.dataChanged.emit(index, index) # this is for updating the view