@@ -177,6 +177,11 @@ class Aladin(anywidget.AnyWidget):
177177 ).tag (sync = True )
178178 _wcs = traitlets .Dict ().tag (sync = True )
179179 _fov_xy = traitlets .Dict ().tag (sync = True )
180+ # Overlays
181+ _overlays = traitlets .List (
182+ [],
183+ help = "A list of overlays on the widget." ,
184+ ).tag (sync = True )
180185
181186 # content of the last click
182187 clicked_object = traitlets .Dict ().tag (sync = True )
@@ -254,6 +259,9 @@ def _handle_custom_message(self, _: any, message: dict, buffers: any) -> None:
254259 self .listener_callback ["select" ](message ["content" ])
255260 elif event_type == "save_view_as_image" :
256261 self ._save_file (message ["path" ], buffers [0 ])
262+ elif event_type == "current_overlays" :
263+ self .listener_callback ["current_overlays" ](message ["content" ])
264+ self ._overlays = message ["content" ]["overlays" ]
257265
258266 @property
259267 def selected_objects (self ) -> List [Table ]:
@@ -271,6 +279,18 @@ def selected_objects(self) -> List[Table]:
271279 catalogs .append (Table (objects_data ))
272280 return catalogs
273281
282+ @property
283+ def overlays (self ) -> List :
284+ """The list of overlays on the widget.
285+
286+ Returns
287+ -------
288+ list
289+ A list of strings representing the widget overlays.
290+
291+ """
292+ return self ._overlays
293+
274294 @property
275295 def height (self ) -> int :
276296 """The height of the widget.
@@ -957,12 +977,12 @@ def add_graphic_overlay_from_stcs(
957977
958978 @widget_should_be_loaded
959979 def remove_overlay (self , overlay_name : Union [Iterable [str ], str ]) -> None :
960- """Remove an overlay layer defined by an STC-S string.
980+ """Remove an overlay layer defined by a string.
961981
962982 Parameters
963983 ----------
964984 overlay_name : str, Iterable[str]
965- The STC-S string // or an iterable of STC-S strings.
985+ The string or an iterable of strings.
966986
967987 """
968988 overlay_name = [overlay_name ] if isinstance (overlay_name , str ) else overlay_name
@@ -974,6 +994,15 @@ def remove_overlay(self, overlay_name: Union[Iterable[str], str]) -> None:
974994 }
975995 )
976996
997+ @widget_should_be_loaded
998+ def get_overlays (self ) -> List :
999+ """Update the current overlays defined by their names."""
1000+ self .send (
1001+ {
1002+ "event_name" : "get_overlays" ,
1003+ }
1004+ )
1005+
9771006 @widget_should_be_loaded
9781007 def set_color_map (self , color_map_name : str ) -> None :
9791008 """Change the color map of the Aladin Lite widget.
@@ -1039,6 +1068,8 @@ def set_listener(self, listener_type: str, callback: Callable) -> None:
10391068 self .listener_callback ["click" ] = callback
10401069 elif listener_type == "select" :
10411070 self .listener_callback ["select" ] = callback
1071+ elif listener_type == "current_overlays" :
1072+ self .listener_callback ["current_overlays" ] = callback
10421073 else :
10431074 raise ValueError (
10441075 "listener_type must be 'object_hovered', "
0 commit comments