Routable Screens¶
Source: ui/routable_screen.py
Protocols, mixins, and discovery helpers for controls that respond to route activation and responsive layout updates. See the Layout guide.
Structural layout lifecycle for controls hosted by routed views.
RoutableScreen ¶
Bases: Protocol
Protocol implemented by controls that respond to route layout changes.
Source code in src/learning_app/ui/routable_screen.py
apply_layout ¶
apply_layout(metrics: LayoutMetrics | None = None) -> None
Apply a responsive layout snapshot to the control.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
metrics
|
LayoutMetrics | None
|
Metrics to apply, or |
None
|
RoutableScreenMixin ¶
Provide shared layout lifecycle helpers for route body controls.
Source code in src/learning_app/ui/routable_screen.py
apply_layout ¶
apply_layout(metrics: LayoutMetrics | None = None) -> None
Apply route layout metrics in a concrete screen implementation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
metrics
|
LayoutMetrics | None
|
Metrics to apply, or |
None
|
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
Always; subclasses must implement this method. |
Source code in src/learning_app/ui/routable_screen.py
resolve_layout_metrics ¶
resolve_layout_metrics(
metrics: LayoutMetrics | None = None,
) -> LayoutMetrics
Resolve explicit, page-derived, or cached layout metrics.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
metrics
|
LayoutMetrics | None
|
Explicit metrics to return unchanged when provided. |
None
|
Returns:
| Type | Description |
|---|---|
LayoutMetrics
|
Explicit metrics, freshly computed page metrics when a page is |
LayoutMetrics
|
available, or the latest cached/default metrics. |
Source code in src/learning_app/ui/routable_screen.py
update_if_mounted ¶
has_apply_layout ¶
Return whether a value exposes a callable apply_layout attribute.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
control
|
object
|
Value to inspect. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
|
Source code in src/learning_app/ui/routable_screen.py
is_routable ¶
Return whether a value supports the routable-screen lifecycle.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
control
|
object
|
Value to inspect. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
|
bool
|
|
Source code in src/learning_app/ui/routable_screen.py
call_apply_layout ¶
call_apply_layout(
control: object, metrics: LayoutMetrics | None = None
) -> bool
Apply layout to a mounted routable control.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
control
|
object
|
Candidate control, which may be |
required |
metrics
|
LayoutMetrics | None
|
Optional responsive metrics passed to |
None
|
Returns:
| Type | Description |
|---|---|
bool
|
|
Source code in src/learning_app/ui/routable_screen.py
iter_active_view_controls ¶
Yield controls in the active view using depth-first traversal.
Both multi-child controls collections and single-child content
relationships are traversed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
page
|
Page
|
Page whose top view should be traversed. |
required |
Yields:
| Type | Description |
|---|---|
Control
|
Each control reachable from the active view's root controls. |
Source code in src/learning_app/ui/routable_screen.py
find_routable_in_active_view ¶
find_routable_in_active_view(
page: Page,
control_type: type | tuple[type, ...] | None = None,
) -> Control | None
Find the first routable control in the active view.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
page
|
Page
|
Page whose active view should be searched. |
required |
control_type
|
type | tuple[type, ...] | None
|
Optional type or tuple of types used to restrict matches. |
None
|
Returns:
| Type | Description |
|---|---|
Control | None
|
The first matching routable control, or |