ProgressBar

ProgressBar — a bar showing progress from 0.0 to 1.0.
Public functions
ProgressBar
| Returns | Function |
|---|---|
| Constructors | |
Self | new(value: f32) |
Self | indeterminate() |
| Builder methods | |
Self | value(state: impl Into<Prop<f32>>) |
Self | orientation(orientation: Orientation) |
Self | thickness(thickness: f32) |
Self | track_color(color: impl Into<ColorProp>) |
Self | fill_color(color: impl Into<ColorProp>) |
Self | style(style: impl teksilo_core::styles::ProgressBarStyle) |
Self | label(text: impl Into<LocalizedString>) |
Detailed description
Supports determinate (fixed or reactive value), indeterminate (animated
sweep), horizontal, and vertical orientations. The stationary chrome (track
and determinate fill) is delegated to ProgressBarStyle; the indeterminate
sweep is widget-owned (motion infrastructure is not chrome). Three paint
paths exist internally:
- Horizontal indeterminate uses the shader-driven animated-quad
pipeline.
ProgressBar::buildregisters anAnimatedQuadHandleand mounts a singleIndeterminateSweepLeafwhosepaint()issues onedraw_animated_quadper frame; the shader composes the track + moving fill in a procedural draw. The recipe frame is NOT mounted in this case (the shader self-paints both). - Vertical indeterminate keeps the signal-based path. The
recipe frame paints the track; an
IndeterminateSweepLeafin signal mode paints a moving fill rect on top driven by aSignal<f32>::animate_looping. - Determinate mounts the recipe frame only; the frame paints the track plus a proportional fill rect.
#![allow(unused)] fn main() { use teksilo_widgets::ProgressBar; use teksilo_core::signal::Signal; // Static determinate bar at 70 %: let _bar = ProgressBar::new(0.7).thickness(6.0); // Reactive determinate bar: let progress = Signal::new(0.0_f32); let _bar = ProgressBar::new(0.0).value(progress); // Indeterminate (animated sweep): let _spinner_bar = ProgressBar::indeterminate(); }
Density
The picture above is the widget at TargetDensity::Compact, the mouse-and-keyboard ladder. Below is the same subject on the same canvas with only the ladder changed, so what moves is the density and nothing else — where the subject no longer fits, that is what the denser targets cost it at that size. See docs/density-and-targets.md.
Touch

API reference
📖 Full rustdoc API for this module
pub struct ProgressBar
Import: use teksilo::widgets::ProgressBar;
A progress bar — determinate or indeterminate, horizontal or vertical.
#![allow(unused)] fn main() { pub struct ProgressBar { /* fields */ } }
Methods
pub fn new(value: f32) -> Self
Create a determinate progress bar with a static value (0.0–1.0).
pub fn indeterminate() -> Self
Create an indeterminate progress bar (animated sweep).
pub fn value(mut self, state: impl Into<Prop<f32>>) -> Self
Bind the progress value to a reactive state.
pub fn orientation(mut self, orientation: Orientation) -> Self
Set the bar's orientation. Default is Orientation::Horizontal.
Vertical bars use the shader-driven animation path only for horizontal;
vertical indeterminate bars use the signal-driven path instead.
pub fn thickness(mut self, thickness: f32) -> Self
Set the bar's narrow dimension in logical pixels. For horizontal bars this is the height; for vertical bars this is the width. Default is the active style's thickness, 4.0 for the shipped style.
pub fn track_color(mut self, color: impl Into<ColorProp>) -> Self
Override the track background. Default (unset) is SurfaceRole::Sunken.
Accepts Color, roles, or Signal<Color>.
pub fn fill_color(mut self, color: impl Into<ColorProp>) -> Self
Override the fill / sweep color. Default (unset) is SurfaceRole::Accent.
Accepts Color, roles, or Signal<Color>.
pub fn style(mut self, style: impl teksilo_core::styles::ProgressBarStyle) -> Self
Per-call style override for the stationary chrome (track +
determinate fill). The indeterminate sweep is widget-owned and
always uses the shader-quad / signal-driven path described in
the module doc; the style supplies the sweep's colour
recipe via fill_color_override / track_color_override.
pub fn label(mut self, text: impl Into<LocalizedString>) -> Self
Accessible name for the progress bar.