From 5577f204af681f9447160989195c5893546e1f0b Mon Sep 17 00:00:00 2001 From: gnzng Date: Fri, 11 Apr 2025 07:53:43 -0700 Subject: [PATCH] adding saved state for plan parameters during a run --- xicam/Acquire/controlwidgets/runenginewidget.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/xicam/Acquire/controlwidgets/runenginewidget.py b/xicam/Acquire/controlwidgets/runenginewidget.py index 37888ef..8d69bf1 100644 --- a/xicam/Acquire/controlwidgets/runenginewidget.py +++ b/xicam/Acquire/controlwidgets/runenginewidget.py @@ -26,6 +26,7 @@ def __init__(self, *args, **kwargs): self.planview.setSelectionModel(self.selectionmodel) self.parameterview = ParameterTree() + self.saved_parameters = None self.metadata = MetadataWidget() @@ -96,9 +97,11 @@ def showPlan(self): def copy(self): self.metadata.reset() - planitem = self.plansmodel.itemFromIndex( - self.selectionmodel.currentIndex() - ).data(Qt.UserRole) + # If we are in a running state, we should use the saved parameters from the class: + if self.saved_parameters is not None: + parameter_dict = self.saved_parameters + else: + planitem = self.plansmodel.itemFromIndex(self.selectionmodel.currentIndex()).data(Qt.UserRole) parameter_dict = planitem.parameter.saveState(filter='user')["children"] run_params_str = "" keys_list = list(parameter_dict.keys()) # Convert to a list to allow indexing @@ -136,7 +139,7 @@ def copy(self): def run(self): self.metadata.reset() planitem = self.plansmodel.itemFromIndex(self.selectionmodel.currentIndex()).data(Qt.UserRole) - + self.saved_parameters = planitem.parameter.saveState(filter='user')["children"] # Save the parameters to be accessed in the copy function planitem.run(callback=partial(threads.invoke_in_main_thread, self.metadata.doc_consumer, force_event=True)) def abort(self): @@ -166,6 +169,7 @@ def _started(self): def _finished(self): self.abortbutton.setEnabled(False) self.pausebutton.setEnabled(False) + self.saved_parameters = None # Reset saved parameters after the plan is finished def _aborted(self): self._finished()