From e706e568bdda179abfa34fd13ee39cc07177faef Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 9 Aug 2024 16:28:08 +0500 Subject: [PATCH] bcf - option to provide snapshot filename + save warnings #4453 Example warning: WARNING. Snapshot with viewpoint guid '6aff8c6e-216c-48c9-8120-3101816def3e' won't be saved to bcf. Only snapshot data (VisualizationInfoHandler.snapshot) is provided and snapshot filename (ViewPoint.snapshot) is missing. --- src/bcf/bcf/v2/topic.py | 5 ++++- src/bcf/bcf/v2/visinfo.py | 9 +++++++++ src/bcf/bcf/v3/topic.py | 5 ++++- src/bcf/bcf/v3/visinfo.py | 9 +++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/bcf/bcf/v2/topic.py b/src/bcf/bcf/v2/topic.py index 88c991ae0b..4d016449e2 100644 --- a/src/bcf/bcf/v2/topic.py +++ b/src/bcf/bcf/v2/topic.py @@ -293,10 +293,13 @@ class TopicHandler: self.add_visinfo_handler(vi_handler) return vi_handler - def add_visinfo_handler(self, new_viewpoint: VisualizationInfoHandler) -> mdl.ViewPoint: + def add_visinfo_handler( + self, new_viewpoint: VisualizationInfoHandler, snapshot_filename: Optional[str] = None + ) -> mdl.ViewPoint: self.viewpoints[new_viewpoint.guid + ".bcfv"] = new_viewpoint viewpoint = mdl.ViewPoint( viewpoint=new_viewpoint.guid + ".bcfv", + snapshot=snapshot_filename, guid=new_viewpoint.guid, ) self.markup.viewpoints.append(viewpoint) diff --git a/src/bcf/bcf/v2/visinfo.py b/src/bcf/bcf/v2/visinfo.py index 08694b8111..ed6f3324f6 100644 --- a/src/bcf/bcf/v2/visinfo.py +++ b/src/bcf/bcf/v2/visinfo.py @@ -134,6 +134,15 @@ class VisualizationInfoHandler: self._save_bitmaps(bcf_zip, topic_dir) def _save_snapshot(self, bcf_zip: ZipFileInterface, topic_dir: str, filename: Optional[str]) -> None: + if bool(self.snapshot) ^ bool(filename): + data = ["data (VisualizationInfoHandler.snapshot)", "filename (ViewPoint.snapshot)"] + provided_data, missing_data = data if self.snapshot else data[::-1] + print( + f"WARNING. Snapshot with viewpoint guid '{self.guid}' won't be saved to bcf. " + f"Only snapshot {provided_data} is provided but snapshot {missing_data} is missing." + ) + return + if self.snapshot and filename: bcf_zip.writestr(f"{topic_dir}/{filename}", self.snapshot) diff --git a/src/bcf/bcf/v3/topic.py b/src/bcf/bcf/v3/topic.py index dbdc1e0fc3..2fd8db6fe4 100644 --- a/src/bcf/bcf/v3/topic.py +++ b/src/bcf/bcf/v3/topic.py @@ -191,12 +191,15 @@ class TopicHandler: self.add_visinfo_handler(vi_handler) return vi_handler - def add_visinfo_handler(self, new_viewpoint: VisualizationInfoHandler) -> mdl.ViewPoint: + def add_visinfo_handler( + self, new_viewpoint: VisualizationInfoHandler, snapshot_filename: Optional[str] = None + ) -> mdl.ViewPoint: self.viewpoints[new_viewpoint.guid + ".bcfv"] = new_viewpoint if self.topic.viewpoints is None: self.topic.viewpoints = mdl.TopicViewpoints() viewpoint = mdl.ViewPoint( viewpoint=new_viewpoint.guid + ".bcfv", + snapshot=snapshot_filename, guid=new_viewpoint.guid, ) self.topic.viewpoints.view_point.append(viewpoint) diff --git a/src/bcf/bcf/v3/visinfo.py b/src/bcf/bcf/v3/visinfo.py index f2666288d9..d1e438fada 100644 --- a/src/bcf/bcf/v3/visinfo.py +++ b/src/bcf/bcf/v3/visinfo.py @@ -133,6 +133,15 @@ class VisualizationInfoHandler: self._save_bitmaps(bcf_zip, topic_dir) def _save_snapshot(self, bcf_zip: ZipFileInterface, topic_dir: str, filename: Optional[str]) -> None: + if bool(self.snapshot) ^ bool(filename): + data = ["data (VisualizationInfoHandler.snapshot)", "filename (ViewPoint.snapshot)"] + provided_data, missing_data = data if self.snapshot else data[::-1] + print( + f"WARNING. Snapshot with viewpoint guid '{self.guid}' won't be saved to bcf. " + f"Only snapshot {provided_data} is provided but snapshot {missing_data} is missing." + ) + return + if self.snapshot and filename: bcf_zip.writestr(f"{topic_dir}/{filename}", self.snapshot)