Quellcode für miniworlds.worlds.manager.layout_manager

from typing import Optional, TYPE_CHECKING

if TYPE_CHECKING:
    from miniworlds.worlds.world import World
    from miniworlds.base.app import App


[Doku] class LayoutManager: """ LayoutManager handles the positioning and management of World objects within an application window. It is stored internally on `world._layout`, while the public API is exposed via `world.camera` and delegates layout behavior to the underlying `App` and `WorldsManager`. """
[Doku] def __init__(self, world: "World", app: "App") -> None: """ Initialize a LayoutManager for a given world and application. Args: world: The World instance that owns this layout manager. app: The application instance managing all worlds. Example: >>> world.camera.add_right(Toolbar(), size=150) """ self.world: "World" = world self.app: "App" = app self.docking_position: Optional[str] = None # e.g., "right", "bottom"
[Doku] def add_right(self, world: "World", size: int = 100) -> "World": """ Adds a new world to the right side of the current world. Args: world: The World instance to dock. size: Width of the added world in pixels (default: 100). Returns: The newly added World instance. Example: >>> world.camera.add_right(Toolbar(), size=150) """ return self.app.worlds_manager.add_world(world, dock="right", size=size)
[Doku] def add_left(self, world: "World", size: int = 100) -> "World": """ Adds a new world to the left side of the current world. The current world (and all worlds docked to its right) are shifted to the right by the width of the added world. Args: world: The World instance to dock. size: Width of the added world in pixels (default: 100). Returns: The newly added World instance. Example: >>> world.camera.add_left(Toolbar(), size=150) """ return self.app.worlds_manager.add_world(world, dock="left", size=size)
[Doku] def add_bottom(self, world: "World", size: int = 100) -> "World": """ Adds a new world below the current world. Args: world: The World instance to dock. size: Height of the added world in pixels (default: 100). Returns: The newly added World instance. Example: >>> world.camera.add_bottom(Console(), size=200) """ return self.app.worlds_manager.add_world(world, dock="bottom", size=size)
[Doku] def remove_world(self, world: "World") -> None: """ Removes a world from the current layout. Args: world: The World instance to remove. Example: >>> world.camera.remove_world(toolbar) """ self.app.worlds_manager.remove_world(world)
[Doku] def switch_world(self, new_world: "World", reset: bool = False) -> None: """ Switches focus to another world. Args: new_world: The World instance to activate. reset: Whether to reset the world state (default: False). Example: >>> world.camera.switch_world(main_scene, reset=True) """ self.app.worlds_manager.switch_world(self.world, new_world, reset)
@property def window_docking_position(self) -> Optional[str]: """ Returns the docking position of this world in the window layout. Returns: A string such as "right" or "bottom", or None if undocked. Example: >>> world.camera.window_docking_position 'right' """ return self.docking_position def _add_to_window(self, app: "App", dock: str, size: int = 100) -> None: """ Internal method to integrate this world into the window system. This is typically called by the WorldsManager during world addition. Args: app: The application instance. dock: The docking position ("right", "bottom", etc.). size: The pixel size of the world in the layout. Example (not called manually): >>> world.camera.add_bottom(console, size=150) """ self.world._app = app self.app = app self.world._window = self.world._app.window self.docking_position = dock