diff --git a/paseos/activities/activity_manager.py b/paseos/activities/activity_manager.py index c28f2dfd..b1cc9a04 100644 --- a/paseos/activities/activity_manager.py +++ b/paseos/activities/activity_manager.py @@ -133,9 +133,11 @@ async def job(): ) await asyncio.wait([asyncio.create_task(processor.stop())]) self._paseos_instance._is_running_activity = False + self._paseos_instance._local_actor._current_activity = None del processor # Workaround to avoid error when executed in a Jupyter notebook. + self._paseos_instance._local_actor._current_activity = name if is_notebook(): return job() else: diff --git a/paseos/actors/base_actor.py b/paseos/actors/base_actor.py index 4a0994db..9ddfade2 100644 --- a/paseos/actors/base_actor.py +++ b/paseos/actors/base_actor.py @@ -37,6 +37,9 @@ class BaseActor(ABC): # Communication links dictionary _communication_devices = DotMap(_dynamic=False) + # Tracks the current activity + _current_activity = None + def __init__(self, name: str, position, epoch: pk.epoch) -> None: """Constructor for a base actor diff --git a/paseos/visualization/space_animation.py b/paseos/visualization/space_animation.py index 058b79e6..51377c0a 100644 --- a/paseos/visualization/space_animation.py +++ b/paseos/visualization/space_animation.py @@ -153,6 +153,7 @@ def _populate_textbox(self, actor: BaseActor) -> str: for name in actor.communication_devices.keys(): info = actor.communication_devices[name] info_str += f"\nCommDevice1: {info.bandwidth_in_kbps} kbps" + elif isinstance(actor, GroundstationActor): # TODO: implement textbox for groundstation raise NotImplementedError( @@ -163,6 +164,10 @@ def _populate_textbox(self, actor: BaseActor) -> str: "SpacePlot is currently not implemented for actor type" + type(actor) ) + cur_act = actor._current_activity + if cur_act is not None: + info_str += f"\n({cur_act})" + return info_str def _plot_los(self, los_matrix: np.ndarray) -> None: