mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
review changes
This commit is contained in:
@@ -631,17 +631,26 @@ class App(Generic[ReturnType], DOMNode):
|
|||||||
self._register(self.screen, widget)
|
self._register(self.screen, widget)
|
||||||
|
|
||||||
def is_screen_installed(self, screen: Screen | str) -> bool:
|
def is_screen_installed(self, screen: Screen | str) -> bool:
|
||||||
"""Check if a given screen has been installed."""
|
"""Check if a given screen has been installed.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
screen (Screen | str): Either a Screen object or screen name (the `name` argument when installed).
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if the screen is currently installed,
|
||||||
|
"""
|
||||||
if isinstance(screen, str):
|
if isinstance(screen, str):
|
||||||
return screen in self._installed_screens
|
return screen in self._installed_screens
|
||||||
else:
|
else:
|
||||||
return screen in self._installed_screens.values()
|
return screen in self._installed_screens.values()
|
||||||
|
|
||||||
def get_screen(self, screen: Screen | str) -> Screen:
|
def get_screen(self, screen: Screen | str) -> Screen:
|
||||||
"""Get a screen and ensure it is registered.
|
"""Get an installed screen.
|
||||||
|
|
||||||
|
If the screen isn't running, it will be registered before it is run.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
screen (Screen | str): A screen instance or a named screen.
|
screen (Screen | str): Either a Screen object or screen name (the `name` argument when installed).
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
KeyError: If the named screen doesn't exist.
|
KeyError: If the named screen doesn't exist.
|
||||||
@@ -689,21 +698,19 @@ class App(Generic[ReturnType], DOMNode):
|
|||||||
self.screen.post_message_no_wait(events.ScreenResume(self))
|
self.screen.post_message_no_wait(events.ScreenResume(self))
|
||||||
self.log(f"{self.screen} is current (PUSHED)")
|
self.log(f"{self.screen} is current (PUSHED)")
|
||||||
|
|
||||||
def switch_screen(self, screen: Screen | str) -> Screen:
|
def switch_screen(self, screen: Screen | str) -> None:
|
||||||
"""Switch to a another screen.
|
"""Switch to a another screen by replacing the top of the screen stack with a new screen.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
screen (Screen | str): A screen instance or a named of a screen.
|
screen (Screen | str): Either a Screen object or screen name (the `name` argument when installed).
|
||||||
|
|
||||||
Returns:
|
|
||||||
Screen: The previous screen object.
|
|
||||||
"""
|
"""
|
||||||
previous_screen = self._replace_screen(self._screen_stack.pop())
|
if self.screen is not screen:
|
||||||
next_screen = self.get_screen(screen)
|
self._replace_screen(self._screen_stack.pop())
|
||||||
self._screen_stack.append(next_screen)
|
next_screen = self.get_screen(screen)
|
||||||
self.screen.post_message_no_wait(events.ScreenResume(self))
|
self._screen_stack.append(next_screen)
|
||||||
self.log(f"{self.screen} is current (SWITCHED)")
|
self.screen.post_message_no_wait(events.ScreenResume(self))
|
||||||
return previous_screen
|
self.log(f"{self.screen} is current (SWITCHED)")
|
||||||
|
|
||||||
def install_screen(self, screen: Screen, name: str | None = None) -> str:
|
def install_screen(self, screen: Screen, name: str | None = None) -> str:
|
||||||
"""Install a screen.
|
"""Install a screen.
|
||||||
@@ -722,7 +729,7 @@ class App(Generic[ReturnType], DOMNode):
|
|||||||
if name is None:
|
if name is None:
|
||||||
name = nanoid.generate()
|
name = nanoid.generate()
|
||||||
if name in self._installed_screens:
|
if name in self._installed_screens:
|
||||||
raise ScreenError(f"Can't install screen; {name!r} is already registered")
|
raise ScreenError(f"Can't install screen; {name!r} is already installed")
|
||||||
if screen in self._installed_screens.values():
|
if screen in self._installed_screens.values():
|
||||||
raise ScreenError(
|
raise ScreenError(
|
||||||
"Can't install screen; {screen!r} has already been installed"
|
"Can't install screen; {screen!r} has already been installed"
|
||||||
|
|||||||
Reference in New Issue
Block a user