diff --git a/holonote/annotate/display.py b/holonote/annotate/display.py index e365526..ebaa904 100644 --- a/holonote/annotate/display.py +++ b/holonote/annotate/display.py @@ -281,6 +281,15 @@ def _update_data(self): def element(self): return self.overlay() + @property + def edit_streams(self) -> dict[str, hv.streams.Stream]: + edit_streams = {} + if self.region_format in ("range", "range-range"): + edit_streams["box_select"] = self._edit_streams[0] + elif self.region_format in ("point", "point-point"): + edit_streams["tap"] = self._edit_streams[1] + return edit_streams + @property def edit_tools(self) -> list[Tool]: tools = [] @@ -328,6 +337,8 @@ def selection_enabled(self) -> bool: @selection_enabled.setter def selection_enabled(self, enabled: bool) -> None: self._selection_enabled = enabled + if not enabled: + self.clear_indicated_region() @property def editable_enabled(self) -> bool: @@ -336,8 +347,6 @@ def editable_enabled(self) -> bool: @editable_enabled.setter def editable_enabled(self, enabled: bool) -> None: self._editable_enabled = enabled - if not enabled: - self.clear_indicated_region() def _filter_stream_values(self, bounds, x, y, geometry): if not self._editable_enabled: diff --git a/holonote/tests/test_annotators_element.py b/holonote/tests/test_annotators_element.py index b2511aa..6ebe802 100644 --- a/holonote/tests/test_annotators_element.py +++ b/holonote/tests/test_annotators_element.py @@ -47,6 +47,15 @@ def test_set_regions_range1d(annotator_range1d) -> None: assert output2 == expected2 +def test_edit_streams(annotator_range1d) -> None: + annotator = annotator_range1d + edit_streams = annotator.get_display("TIME").edit_streams + assert len(edit_streams) == 1 + assert "box_select" in edit_streams + assert "tap" not in edit_streams + assert "lasso_select" not in edit_streams + + def test_set_regions_range2d(annotator_range2d) -> None: annotator = annotator_range2d annotator.get_display("x", "y")