Skip to content

Commit 2ef650d

Browse files
committed
Enhance group short ID handling to distinguish between Signal and Image panels, improving clarity in cross-panel operations.
1 parent 8482b1e commit 2ef650d

4 files changed

Lines changed: 44 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ See DataLab [roadmap page](https://datalab-platform.com/en/contributing/roadmap.
66

77
💥 New features and enhancements:
88

9+
* **Group short IDs now distinguish between panels**: Group identifiers are now panel-specific to avoid ambiguity in cross-panel operations
10+
* Signal Panel groups use `gs` prefix (e.g., `gs001`, `gs002`, ...)
11+
* Image Panel groups use `gi` prefix (e.g., `gi001`, `gi002`, ...)
12+
* Cross-panel operation results now clearly indicate source panel (e.g., `radial_profile(gi001)` vs `radial_profile(gs001)`)
13+
* Improves clarity when working with groups across both Signal and Image panels
14+
915
* **Performance optimizations for large result sets**: Added configurable display limits to prevent UI freezing with large analysis results
1016
* New configuration options to control result display behavior:
1117
* `max_shapes_to_draw` (default: 1,000): Maximum number of geometry shapes drawn on plots

datalab/gui/panel/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1200,7 +1200,7 @@ def __init__(self, parent: QW.QWidget) -> None:
12001200
self.mainwindow: DLMainWindow = parent
12011201
self.objprop = ObjectProp(self, self.PARAMCLASS)
12021202
self.show_label_checkbox: QW.QCheckBox | None = None
1203-
self.objmodel = objectmodel.ObjectModel()
1203+
self.objmodel = objectmodel.ObjectModel(f"g{self.PARAMCLASS.PREFIX}")
12041204
self.objview = objectview.ObjectView(self, self.objmodel)
12051205
self.objview.SIG_IMPORT_FILES.connect(self.handle_dropped_files)
12061206
self.objview.populate_tree()

datalab/objectmodel.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ def set_uuid(obj: SignalObj | ImageObj | ObjectGroup) -> None:
7878

7979
def get_short_id(obj: SignalObj | ImageObj | ObjectGroup) -> str:
8080
"""Short object ID"""
81+
if isinstance(obj, ObjectGroup):
82+
return f"{obj.prefix}{get_number(obj):03d}"
8183
return f"{obj.PREFIX}{get_number(obj):03d}"
8284

8385

@@ -114,12 +116,12 @@ class ObjectGroup:
114116
Args:
115117
title: group title
116118
model: object model
119+
prefix: prefix for short ID ("gs" for signal groups, "gi" for image groups)
117120
"""
118121

119-
PREFIX = "g"
120-
121-
def __init__(self, title: str, model: ObjectModel) -> None:
122+
def __init__(self, title: str, model: ObjectModel, prefix: str) -> None:
122123
self.model = model
124+
self.prefix = prefix # Instance-specific prefix
123125
self.uuid: str = str(uuid4()) # Group uuid
124126
self.number: int = 0 # Group number (used for short ID)
125127
self.__objects: list[str] = [] # list of object uuids
@@ -193,7 +195,13 @@ def get_object_ids(self) -> list[str]:
193195
class ObjectModel:
194196
"""Represents a DataLab object model (groups of signals/images)"""
195197

196-
def __init__(self) -> None:
198+
def __init__(self, group_prefix: str) -> None:
199+
"""Initialize object model
200+
201+
Args:
202+
group_prefix: prefix for group short IDs ("gs" for signal, "gi" for image)
203+
"""
204+
self._group_prefix = group_prefix
197205
# dict of objects, key is object uuid:
198206
self._objects: dict[str, SignalObj | ImageObj] = {}
199207
# list of groups:
@@ -360,8 +368,15 @@ def get_groups(self, uuids: list[str] | None = None) -> list[ObjectGroup]:
360368
return [group for group in self._groups if get_uuid(group) in uuids]
361369

362370
def add_group(self, title: str) -> ObjectGroup:
363-
"""Add group to model"""
364-
group = ObjectGroup(title, self)
371+
"""Add group to model
372+
373+
Args:
374+
title: group title
375+
376+
Returns:
377+
Created group object
378+
"""
379+
group = ObjectGroup(title, self, self._group_prefix)
365380
self._groups.append(group)
366381
self.reset_short_ids()
367382
return group

doc/locale/fr/LC_MESSAGES/changelog.po

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ msgid ""
77
msgstr ""
88
"Project-Id-Version: DataLab \n"
99
"Report-Msgid-Bugs-To: \n"
10-
"POT-Creation-Date: 2025-11-09 18:55+0100\n"
10+
"POT-Creation-Date: 2025-11-09 19:35+0100\n"
1111
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313
"Language: fr\n"
@@ -30,6 +30,21 @@ msgstr "DataLab Version 1.0.0"
3030
msgid "💥 New features and enhancements:"
3131
msgstr "💥 Nouvelles fonctionnalités et améliorations :"
3232

33+
msgid "**Group short IDs now distinguish between panels**: Group identifiers are now panel-specific to avoid ambiguity in cross-panel operations"
34+
msgstr "**Les identifiants courts de groupe distinguent désormais les panneaux** : Les identifiants de groupe sont désormais spécifiques au panneau afin d'éviter toute ambiguïté dans les opérations inter-panneaux"
35+
36+
msgid "Signal Panel groups use `gs` prefix (e.g., `gs001`, `gs002`, ...)"
37+
msgstr "**Les groupes du panneau de signal utilisent le préfixe `gs` (par exemple, `gs001`, `gs002`, ...)**"
38+
39+
msgid "Image Panel groups use `gi` prefix (e.g., `gi001`, `gi002`, ...)"
40+
msgstr "**Les groupes du panneau d'image utilisent le préfixe `gi` (par exemple, `gi001`, `gi002`, ...)**"
41+
42+
msgid "Cross-panel operation results now clearly indicate source panel (e.g., `radial_profile(gi001)` vs `radial_profile(gs001)`)"
43+
msgstr "**Les résultats des opérations inter-panneaux indiquent désormais clairement le panneau source (par exemple, `radial_profile(gi001)` contre `radial_profile(gs001)`)**"
44+
45+
msgid "Improves clarity when working with groups across both Signal and Image panels"
46+
msgstr "**Améliore la clarté lors du travail avec des groupes à travers les panneaux de signal et d'image**"
47+
3348
msgid "**Performance optimizations for large result sets**: Added configurable display limits to prevent UI freezing with large analysis results"
3449
msgstr "**Optimisations des performances pour les grands ensembles de résultats** : Ajout de limites d'affichage configurables pour éviter le gel de l'interface utilisateur avec de grands résultats d'analyse"
3550

0 commit comments

Comments
 (0)