From 4a343b204112c53e593e9bb43642d21f268dfa85 Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Tue, 3 Jun 2025 18:30:58 +0200 Subject: [PATCH] feat(image_layer): add default name for image layers --- bec_widgets/widgets/plots/image/image_base.py | 9 +++++++-- tests/unit_tests/test_image_layer.py | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/bec_widgets/widgets/plots/image/image_base.py b/bec_widgets/widgets/plots/image/image_base.py index 1d110025..d21e4f49 100644 --- a/bec_widgets/widgets/plots/image/image_base.py +++ b/bec_widgets/widgets/plots/image/image_base.py @@ -9,6 +9,7 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError from qtpy.QtCore import QPointF, Signal, SignalInstance from qtpy.QtWidgets import QDialog, QVBoxLayout +from bec_widgets.utils.container_utils import WidgetContainerUtils from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.side_panel import SidePanel from bec_widgets.utils.toolbar import MaterialIconAction, SwitchableToolBarAction @@ -93,7 +94,7 @@ class ImageLayerManager: def add( self, - name: str, + name: str | None = None, z_position: int | Literal["top", "bottom"] | None = None, sync: ImageLayerSync | None = None, **kwargs, @@ -102,12 +103,16 @@ class ImageLayerManager: Add an image layer to the widget. Args: - name (str): The name of the image layer. + name (str | None): The name of the image layer. If None, a default name is generated. image (ImageItem): The image layer to add. z_position (int | None): The z position of the image layer. If None, the layer is added to the top. sync (ImageLayerSync | None): The synchronization settings for the image layer. **kwargs: ImageLayerSync settings. Only used if sync is None. """ + if name is None: + name = WidgetContainerUtils.generate_unique_name( + "image_layer", list(self.layers.keys()) + ) if name in self.layers: raise ValueError(f"Layer with name '{name}' already exists.") if sync is None: diff --git a/tests/unit_tests/test_image_layer.py b/tests/unit_tests/test_image_layer.py index dc313151..078ffa0a 100644 --- a/tests/unit_tests/test_image_layer.py +++ b/tests/unit_tests/test_image_layer.py @@ -73,3 +73,8 @@ def test_image_layer_iteration(image_layer_manager): layer2 = image_layer_manager.add(name="Test Layer 2") assert list(image_layer_manager) == [layer, layer2] + + layer3 = image_layer_manager.add() + assert list(image_layer_manager) == [layer, layer2, layer3] + names = list(image_layer_manager.layers.keys()) + assert names == ["Test Layer", "Test Layer 2", "image_layer_0"]