Skip to content

Commit 69be07c

Browse files
committed
Fix properties update after changing creation/processing parameters interactively
1 parent decb7f1 commit 69be07c

1 file changed

Lines changed: 28 additions & 9 deletions

File tree

datalab/gui/panel/base.py

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -374,27 +374,38 @@ def display_processing_history(self, obj: SignalObj | ImageObj) -> bool:
374374
self.processing_history.setText(history_text)
375375
return bool(history_text)
376376

377-
def update_properties_from(self, obj: SignalObj | ImageObj | None = None) -> None:
378-
"""Update properties from signal/image dataset
377+
def __update_properties_dataset(self, obj: SignalObj | ImageObj) -> None:
378+
"""Update properties dataset from signal/image dataset
379379
380380
Args:
381381
obj: Signal or Image object
382382
"""
383-
self.properties.setDisabled(obj is None)
384-
if obj is None:
385-
obj = self.objclass()
386383
dataset: SignalObj | ImageObj = self.properties.dataset
387384
dataset.set_defaults()
388385
update_dataset(dataset, obj)
389386
self.properties.get()
390-
has_analysis_parameters = self.display_analysis_parameters(obj)
391-
self.display_processing_history(obj)
392387
self.properties.apply_button.setEnabled(False)
393388

389+
def update_properties_from(self, obj: SignalObj | ImageObj | None = None) -> None:
390+
"""Update properties panel (properties, creation, processing) from object.
391+
392+
Args:
393+
obj: Signal or Image object
394+
"""
395+
self.properties.setDisabled(obj is None)
396+
if obj is None:
397+
obj = self.objclass()
398+
399+
# Update the properties dataset
400+
self.__update_properties_dataset(obj)
394401
# Store original values to detect which properties have changed
395-
# Using restore_dataset to convert the dataset to a dictionary
402+
# (using `restore_dataset` to convert the dataset to a dictionary)
396403
self.__original_values = {}
397-
restore_dataset(dataset, self.__original_values)
404+
restore_dataset(self.properties.dataset, self.__original_values)
405+
406+
# Display analysis parameters and processing history
407+
has_analysis_parameters = self.display_analysis_parameters(obj)
408+
self.display_processing_history(obj)
398409

399410
# Remove only Creation and Processing tabs (dynamic tabs)
400411
# Use widget references instead of text labels for reliable identification
@@ -595,6 +606,10 @@ def apply_creation_parameters(self) -> None:
595606
# of the Properties tab and could cause recursion issues)
596607
self.panel.refresh_plot(obj_uuid, update_items=True, force=True)
597608

609+
# Update the Properties tab to reflect the new object properties
610+
# (e.g., data type, dimensions, etc.)
611+
self.__update_properties_dataset(self.current_creation_obj)
612+
598613
# Refresh the Creation tab with the new parameters
599614
# Use QTimer to defer this until after the current event is processed
600615
# Set the Creation tab as current to keep it visible after refresh
@@ -836,6 +851,10 @@ def apply_processing_parameters(
836851
self.panel.objview.update_item(obj_uuid)
837852
self.panel.refresh_plot(obj_uuid, update_items=True, force=True)
838853

854+
# Update the Properties tab to reflect the new object properties
855+
# (e.g., data type, dimensions, etc.)
856+
self.__update_properties_dataset(obj)
857+
839858
# Refresh the Processing tab with the new parameters
840859
# Don't reset parameters from source object - keep the user's values
841860
# Set the Processing tab as current to keep it visible after refresh

0 commit comments

Comments
 (0)