From e77b9821229bee5e42862bc0d53c1dab2ae0029a Mon Sep 17 00:00:00 2001 From: Melissa LeBlanc-Williams Date: Mon, 2 Oct 2023 13:05:55 -0700 Subject: [PATCH] Add root_group property to display --- displayio/_display.py | 20 +++++++++++++++++++- displayio/_epaperdisplay.py | 15 ++++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/displayio/_display.py b/displayio/_display.py index ba6ea9e..a3da5c5 100644 --- a/displayio/_display.py +++ b/displayio/_display.py @@ -243,8 +243,14 @@ class Display: self._core.send(DISPLAY_DATA, CHIP_SELECT_UNTOUCHED, pixels) def show(self, group: Group) -> None: - """Switches to displaying the given group of layers. When group is None, the + """ + .. note:: `show()` is deprecated and will be removed when CircuitPython 9.0.0 + is released. Use ``.root_group = group`` instead. + + Switches to displaying the given group of layers. When group is None, the default CircuitPython terminal will be shown. + + :param Group group: The group to show. """ if group is None: group = circuitpython_splash @@ -525,3 +531,15 @@ class Display: def bus(self) -> _DisplayBus: """Current Display Bus""" return self._core.get_bus() + + @property + def root_group(self) -> Group: + """The root group on the display. + If the root group is set to `displayio.CIRCUITPYTHON_TERMINAL`, the default + CircuitPython terminal will be shown. + If the root group is set to ``None``, no output will be shown.""" + return self._core.current_group + + @root_group.setter + def root_group(self, new_group: Group) -> None: + self._set_root_group(new_group) diff --git a/displayio/_epaperdisplay.py b/displayio/_epaperdisplay.py index 59ed690..6ea80f7 100644 --- a/displayio/_epaperdisplay.py +++ b/displayio/_epaperdisplay.py @@ -248,13 +248,22 @@ class EPaperDisplay: def show(self, group: Group) -> None: # pylint: disable=unnecessary-pass - """Switches to displaying the given group of layers. When group is None, the default + """ + .. note:: `show()` is deprecated and will be removed when CircuitPython 9.0.0 + is released. Use ``.root_group = group`` instead. + + Switches to displaying the given group of layers. When group is None, the default CircuitPython terminal will be shown (eventually). """ if group is None: group = circuitpython_splash self._core.set_root_group(group) + def _set_root_group(self, root_group: Group) -> None: + ok = self._core.set_root_group(root_group) + if not ok: + raise ValueError("Group already used") + def update_refresh_mode( self, start_sequence: ReadableBuffer, seconds_per_frame: float ) -> None: @@ -592,8 +601,8 @@ class EPaperDisplay: """The root group on the epaper display. If the root group is set to ``None``, no output will be shown. """ - return self._core.root_group + return self._core.current_group @root_group.setter def root_group(self, new_group: Group) -> None: - self._core.root_group = new_group + self._set_root_group(new_group) -- 2.49.0