Skip to main content

StatusBar

Struct StatusBar 

Source
pub struct StatusBar<M = ()> { /* private fields */ }
Expand description

A status line (#481): StatusItems on the left and on the right, separated by │. It takes no focus and uses no events but ticks, so it sits under anything in a container, or under any component with Overlays::status_bar, which also feeds its hints the component’s keymap. Change it while it shows through its handle.

Implementations§

Source§

impl<M> StatusBar<M>

Source

pub fn new() -> StatusBar<M>

Source

pub fn left(self, id: &str, item: StatusItem) -> Self

Add item as id on the left.

Source

pub fn right(self, id: &str, item: StatusItem) -> Self

Add item as id on the right.

Source

pub fn keymap(self, keymap: Keymap) -> Self

The keymap hints read (see StatusHandle::set_keymap).

Source

pub fn style(self, style: Style) -> Self

The style of the whole line, padded to the width (default: none; on grey23 for a bar with a background).

Source

pub fn separator(self, separator: impl Into<String>) -> Self

What goes between items (default │).

Source

pub fn theme(self, theme: Theme) -> Self

Source

pub fn clock(self, clock: impl Fn() -> Duration + 'static) -> Self

Where spinners read the time from (default: the time since the bar was made): a fixed clock makes a test’s frames exact.

Source

pub fn animate(self, on: bool) -> Self

Whether spinners turn (default: unless RICH_ANIMATION=0, or RICH_A11Y asks for reduced motion, no animation or a screen reader, as for every other animation). Off, a spinner shows its first frame and the bar never ticks.

Source

pub fn handle(&self) -> StatusHandle

A handle that changes this bar’s items while it shows.

Source

pub fn line( &self, context: &Context<'_>, keymap: Option<&Keymap>, ) -> Vec<Segment>

The line at context’s width, with hints read from keymap when given, else from the bar’s own.

Source

pub fn line_text(&self, width: usize) -> String

The line at width, as plain text, for tests and logs.

Trait Implementations§

Source§

impl<M> Component for StatusBar<M>

Source§

type Output = M

Source§

fn handle(&mut self, event: &Event, _: &Context<'_>) -> Flow<M>

Handle one event. Ctrl+C never arrives here: the event loop ends the component with Outcome::Interrupted.
Source§

fn render(&self, context: &Context<'_>) -> View

Render the current state.
Source§

fn tick(&self) -> Option<Duration>

How often the component wants Event::Tick, for a spinner or a countdown. None (the default): never.
Source§

fn focusable(&self) -> bool

Whether the component takes focus in a container: Tab stops on it and keys go to it. The default: yes. A label, or a component that has finished, says no.
Source§

fn start(&mut self, context: &Context<'_>) -> Flow<Self::Output>

Called once, before the component is first painted, with the terminal’s size: for work that needs it, such as rendering content at the width. Returning Done or Cancel finishes the component without waiting for an event. The default does nothing.
Source§

fn mouse(&self) -> bool

Whether the component wants mouse events (#476): clicks, drags and the wheel. Off by default, since reporting the mouse takes text selection away from the terminal; a component turns it on when its caller opts in, and run then enables mouse reporting for the session.
Source§

fn keymap(&self) -> Keymap

The bindings this component has right now, for a help overlay, a shortcut list or status-bar hints to read (see keymap). A container’s include its focused child’s, before its own. The default declares none.
Source§

fn focus_step(&mut self, forward: bool) -> bool

Move focus to the next (forward) or previous focus stop inside this component, for Tab and Shift+Tab. false when there is none after the current one, so the container moves on to its next child. The default, for a component that is one stop: false.
Source§

fn focus_enter(&mut self, forward: bool) -> bool

Take focus from outside: at the first stop inside when forward, at the last otherwise. false when nothing in it can take focus. The default: whether the component is focusable.
Source§

fn default_value(&self) -> Option<Self::Output>

The value to return when the terminal is not interactive and the policy asks for defaults. None: there is none.
Source§

fn prompt( &mut self, io: &mut dyn LineIo, ) -> Result<Option<Self::Output>, NotInteractive>

Ask for the value line by line, for when the terminal is not interactive and the policy asks for a prompt. The default says the component has no line-based form. Read more
Source§

impl<M> Default for StatusBar<M>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<M = ()> !RefUnwindSafe for StatusBar<M>

§

impl<M = ()> !Send for StatusBar<M>

§

impl<M = ()> !Sync for StatusBar<M>

§

impl<M = ()> !UnwindSafe for StatusBar<M>

§

impl<M> Freeze for StatusBar<M>
where PhantomData<fn() -> M>: Freeze,

§

impl<M> Unpin for StatusBar<M>
where PhantomData<fn() -> M>: Unpin,

§

impl<M> UnsafeUnpin for StatusBar<M>
where PhantomData<fn() -> M>: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<C> ComponentExt for C
where C: Component,

Source§

fn map<'a, M>( self, done: impl FnMut(Self::Output) -> Flow<M> + 'a, ) -> Map<'a, Self, M>
where Self: 'a,

Turn this component’s answer into M’s flow: Flow::Done(m) to finish the whole composition with m, Flow::Continue to carry on (the component stays, showing its answer, and focus moves past it). Cancelling cancels the composition unless on_cancel says otherwise.
Source§

fn with_overlays<'a>(self) -> Overlays<'a, Self::Output>
where Self: 'a, Self::Output: 'a,

Wrap this component in Overlays: a command palette, help and a shortcut sheet read from its keymap, and room for a status bar and breadcrumbs.
Source§

fn boxed<'a>(self) -> Child<'a, Self::Output>
where Self: 'a,

Box this component as a Child.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.