Skip to content

Commit ffa3846

Browse files
committed
Add tests for applying creation and processing parameters for signals and images
1 parent 71ded32 commit ffa3846

2 files changed

Lines changed: 283 additions & 31 deletions

File tree

datalab/gui/panel/base.py

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -181,13 +181,12 @@ def __init__(self, panel: BaseDataPanel, objclass: SignalObj | ImageObj) -> None
181181
self.objclass = objclass
182182

183183
# Object creation tab
184-
self._creation_param_editor: gdq.DataSetEditGroupBox | None = None
185-
self._current_creation_obj: SignalObj | ImageObj | None = None
184+
self.creation_param_editor: gdq.DataSetEditGroupBox | None = None
185+
self.current_creation_obj: SignalObj | ImageObj | None = None
186186

187187
# Object processing tab
188-
self._processing_param_editor: gdq.DataSetEditGroupBox | None = None
189-
self._current_processing_obj: SignalObj | ImageObj | None = None
190-
self._processing_scroll: QW.QScrollArea | None = None
188+
self.processing_param_editor: gdq.DataSetEditGroupBox | None = None
189+
self.current_processing_obj: SignalObj | ImageObj | None = None
191190

192191
# Properties tab
193192
self.properties = gdq.DataSetEditGroupBox("", objclass)
@@ -368,10 +367,10 @@ def update_properties_from(self, obj: SignalObj | ImageObj | None = None) -> Non
368367
break
369368

370369
# Reset references for dynamic tabs
371-
self._creation_param_editor = None
372-
self._current_creation_obj = None
373-
self._processing_param_editor = None
374-
self._current_processing_obj = None
370+
self.creation_param_editor = None
371+
self.current_creation_obj = None
372+
self.processing_param_editor = None
373+
self.current_processing_obj = None
375374

376375
# Setup Creation and Processing tabs (if applicable)
377376
if obj is not None:
@@ -458,8 +457,8 @@ def setup_creation_tab(self, obj: SignalObj | ImageObj) -> bool:
458457
editor.set_apply_button_state(False)
459458

460459
# Store reference to be able to retrieve it later
461-
self._creation_param_editor = editor
462-
self._current_creation_obj = obj
460+
self.creation_param_editor = editor
461+
self.current_creation_obj = obj
463462

464463
# Set the parameter editor as the scroll area widget
465464
# Creation tab is always at index 0 (before all other tabs)
@@ -472,10 +471,10 @@ def setup_creation_tab(self, obj: SignalObj | ImageObj) -> bool:
472471

473472
def apply_creation_parameters(self) -> None:
474473
"""Apply creation parameters: recreate object with updated parameters."""
475-
editor = self._creation_param_editor
476-
if editor is None or self._current_creation_obj is None:
474+
editor = self.creation_param_editor
475+
if editor is None or self.current_creation_obj is None:
477476
return
478-
if isinstance(self._current_creation_obj, SignalObj):
477+
if isinstance(self.current_creation_obj, SignalObj):
479478
otext = _("Signal was modified in-place.")
480479
else:
481480
otext = _("Image was modified in-place.")
@@ -490,7 +489,7 @@ def apply_creation_parameters(self) -> None:
490489
# (serialization is done automatically in create_signal/image_from_param)
491490
param = editor.dataset
492491
try:
493-
if isinstance(self._current_creation_obj, SignalObj):
492+
if isinstance(self.current_creation_obj, SignalObj):
494493
new_obj = create_signal_from_param(param)
495494
else: # ImageObj
496495
new_obj = create_image_from_param(param)
@@ -503,14 +502,14 @@ def apply_creation_parameters(self) -> None:
503502
return
504503

505504
# Update the current object in-place
506-
obj_uuid = get_uuid(self._current_creation_obj)
507-
self._current_creation_obj.title = new_obj.title
508-
if isinstance(self._current_creation_obj, SignalObj):
509-
self._current_creation_obj.xydata = new_obj.xydata
505+
obj_uuid = get_uuid(self.current_creation_obj)
506+
self.current_creation_obj.title = new_obj.title
507+
if isinstance(self.current_creation_obj, SignalObj):
508+
self.current_creation_obj.xydata = new_obj.xydata
510509
else: # ImageObj
511-
self._current_creation_obj.data = new_obj.data
510+
self.current_creation_obj.data = new_obj.data
512511
# Update metadata with new creation parameters
513-
insert_creation_parameters(self._current_creation_obj, param)
512+
insert_creation_parameters(self.current_creation_obj, param)
514513

515514
# Update the tree view item (to show new title if it changed)
516515
self.panel.objview.update_item(obj_uuid)
@@ -523,7 +522,7 @@ def apply_creation_parameters(self) -> None:
523522
# Refresh the Creation tab with the new parameters
524523
# Use QTimer to defer this until after the current event is processed
525524
QC.QTimer.singleShot(
526-
0, lambda: self.setup_creation_tab(self._current_creation_obj)
525+
0, lambda: self.setup_creation_tab(self.current_creation_obj)
527526
)
528527

529528
def setup_processing_tab(self, obj: SignalObj | ImageObj) -> bool:
@@ -545,7 +544,7 @@ def setup_processing_tab(self, obj: SignalObj | ImageObj) -> bool:
545544
return False
546545

547546
# Store reference to be able to retrieve it later
548-
self._current_processing_obj = obj
547+
self.current_processing_obj = obj
549548

550549
# Check if object has processing parameter
551550
param = proc_params.param
@@ -567,7 +566,7 @@ def setup_processing_tab(self, obj: SignalObj | ImageObj) -> bool:
567566
editor.set_apply_button_state(False)
568567

569568
# Store reference to be able to retrieve it later
570-
self._processing_param_editor = editor
569+
self.processing_param_editor = editor
571570

572571
# Processing tab comes after Creation tab (if it exists)
573572
# Find the correct insertion index: after Creation (index 0) if it exists,
@@ -576,10 +575,10 @@ def setup_processing_tab(self, obj: SignalObj | ImageObj) -> bool:
576575
insert_index = 1 if has_creation else 0
577576

578577
# Create new processing scroll area and tab
579-
self._processing_scroll = QW.QScrollArea()
580-
self._processing_scroll.setWidgetResizable(True)
581-
self._processing_scroll.setWidget(editor)
582-
self.insertTab(insert_index, self._processing_scroll, _("Processing"))
578+
processing_scroll = QW.QScrollArea()
579+
processing_scroll.setWidgetResizable(True)
580+
processing_scroll.setWidget(editor)
581+
self.insertTab(insert_index, processing_scroll, _("Processing"))
583582
self.setCurrentIndex(insert_index)
584583
return True
585584

@@ -596,8 +595,8 @@ def apply_processing_parameters(
596595
ProcessingReport with success status, object UUID, and optional message.
597596
"""
598597
report = ProcessingReport(success=False)
599-
editor = self._processing_param_editor
600-
obj = obj or self._current_processing_obj
598+
editor = self.processing_param_editor
599+
obj = obj or self.current_processing_obj
601600
if obj is None:
602601
report.message = _("No processing object available.")
603602
return report

0 commit comments

Comments
 (0)