made register / unregister private

This commit is contained in:
Will McGugan
2022-08-06 14:00:10 +01:00
parent cdf7085797
commit 6d94b51a95
4 changed files with 21 additions and 8 deletions

View File

@@ -40,18 +40,31 @@ class NodeList:
return widget in self._nodes
def _append(self, widget: Widget) -> None:
"""Append a Widget.
Args:
widget (Widget): A widget.
"""
if widget not in self._nodes_set:
self._nodes.append(widget)
self._nodes_set.add(widget)
self._updates += 1
def _remove(self, widget: Widget) -> None:
"""Remove a widget from the list.
Removing a widget not in the list is a null-op.
Args:
widget (Widget): A Widget in the list.
"""
if widget in self._nodes_set:
del self._nodes[self._nodes.index(widget)]
self._nodes_set.remove(widget)
self._updates += 1
def _clear(self) -> None:
"""Clear the node list."""
if self._nodes:
self._nodes.clear()
self._nodes_set.clear()

View File

@@ -603,7 +603,7 @@ class App(Generic[ReturnType], DOMNode):
as keyword args they will be assigned an id of the key.
"""
self.register(self.screen, *anon_widgets, **widgets)
self._register(self.screen, *anon_widgets, **widgets)
def mount_all(self, widgets: Iterable[Widget]) -> None:
"""Mount widgets from an iterable.
@@ -612,7 +612,7 @@ class App(Generic[ReturnType], DOMNode):
widgets (Iterable[Widget]): An iterable of widgets.
"""
for widget in widgets:
self.register(self.screen, widget)
self._register(self.screen, widget)
def push_screen(self, screen: Screen | None = None) -> Screen:
"""Push a new screen on the screen stack.
@@ -856,7 +856,7 @@ class App(Generic[ReturnType], DOMNode):
return True
return False
def register(
def _register(
self, parent: DOMNode, *anon_widgets: Widget, **widgets: Widget
) -> None:
"""Mount widget(s) so they may receive events.
@@ -878,13 +878,13 @@ class App(Generic[ReturnType], DOMNode):
widget.id = widget_id
self._register_child(parent, widget)
if widget.children:
self.register(widget, *widget.children)
self._register(widget, *widget.children)
apply_stylesheet(widget)
for _widget_id, widget in name_widgets:
widget.post_message_no_wait(events.Mount(sender=parent))
def unregister(self, widget: Widget) -> None:
def _unregister(self, widget: Widget) -> None:
"""Unregister a widget.
Args:
@@ -1016,7 +1016,7 @@ class App(Generic[ReturnType], DOMNode):
# If the event has been forwarded it may have bubbled up back to the App
if isinstance(event, events.Mount):
screen = Screen()
self.register(self, screen)
self._register(self, screen)
self.push_screen(screen)
await super().on_event(event)

View File

@@ -219,7 +219,7 @@ class MessagePump:
print(self, "close_messages")
self._closing = True
await self._message_queue.put(MessagePriority(None))
self.app.unregister(self)
self.app._unregister(self)
cancel_tasks = list(self._child_tasks)
for task in cancel_tasks:
task.cancel()

View File

@@ -191,7 +191,7 @@ class Widget(DOMNode):
"""
self.app.register(self, *anon_widgets, **widgets)
self.app._register(self, *anon_widgets, **widgets)
self.screen.refresh()
def compose(self) -> ComposeResult: