Struct cursive::views::ProgressBar

source ·
pub struct ProgressBar { /* private fields */ }
Expand description

Animated bar showing a progress value.

This bar has an internal counter, and adapts the length of the displayed bar to the relative position of the counter between a minimum and maximum values.

It also prints a customizable text in the center of the bar, which defaults to the progression percentage.

The bar defaults to the current theme’s highlight color, but that can be customized.

§Example

let bar = ProgressBar::new().with_task(|counter| {
    // This closure is called in parallel.
    for _ in 0..100 {
        // Here we can communicate some
        // advancement back to the bar.
        counter.tick(1);
    }
});

Implementations§

source§

impl ProgressBar

source

pub fn new() -> ProgressBar

Creates a new progress bar.

Default values:

  • min: 0
  • max: 100
  • value: 0
source

pub fn with_value(self, value: Counter) -> ProgressBar

Sets the value to follow.

Use this to manually control the progress to display by directly modifying the value pointed to by value.

source

pub fn start<F>(&mut self, f: F)
where F: FnOnce(Counter) + Send + 'static,

Starts a function in a separate thread, and monitor the progress.

f will be given a Counter to increment the bar’s progress.

This does not reset the value, so it can be called several times to advance the progress in multiple sessions.

source

pub fn with_task<F>(self, task: F) -> ProgressBar
where F: FnOnce(Counter) + Send + 'static,

Starts a function in a separate thread, and monitor the progress.

Chainable variant.

source

pub fn with_label<F>(self, label_maker: F) -> ProgressBar
where F: Fn(usize, (usize, usize)) -> String + 'static + Send + Sync,

Sets the label generator.

The given function will be called with (value, (min, max)). Its output will be used as the label to print inside the progress bar.

The default one shows a percentage progress:

fn make_progress(value: usize, (min, max): (usize, usize)) -> String {
    let percent = 101 * (value - min) / (1 + max - min);
    format!("{} %", percent)
}
source

pub fn set_label<F>(&mut self, label_maker: F)
where F: Fn(usize, (usize, usize)) -> String + 'static + Send + Sync,

Sets the label generator.

The given function will be called with (value, (min, max)). Its output will be used as the label to print inside the progress bar.

source

pub fn label_cb<F>( label_maker: F, ) -> Arc<dyn Fn(usize, (usize, usize)) -> String + Sync + Send>
where F: Fn(usize, (usize, usize)) -> String + 'static + Send + Sync,

Helper method to store a callback of the correct type for Self::set_label.

This is mostly useful when using this view in a template.

source

pub fn set_label_cb( &mut self, label_maker: Arc<dyn Fn(usize, (usize, usize)) -> String + Sync + Send>, )

Helper method to call Self::set_label with a variable from a config.

This is mostly useful when writing a cursive blueprint for this view.

source

pub fn min(self, min: usize) -> ProgressBar

Sets the minimum value.

When value equals min, the bar is at the minimum level.

If self.min > max, self.min is set to max.

Chainable variant.

source

pub fn set_min(&mut self, min: usize)

Sets the minimum value.

When value equals min, the bar is at the minimum level.

If self.min > max, self.min is set to max.

source

pub fn max(self, max: usize) -> ProgressBar

Sets the maximum value.

When value equals max, the bar is at the maximum level.

If min > self.max, self.max is set to min.

Chainable variant.

source

pub fn set_max(&mut self, max: usize)

Sets the maximum value.

When value equals max, the bar is at the maximum level.

If min > self.max, self.max is set to min.

source

pub fn range(self, min: usize, max: usize) -> ProgressBar

Sets the min and max range for the value.

If min > max, swap the two values.

Chainable variant.

source

pub fn set_range(&mut self, min: usize, max: usize)

Sets the min and max range for the value.

If min > max, swap the two values.

source

pub fn set_value(&mut self, value: usize)

Sets the current value.

Value is clamped between min and max.

source

pub fn set_counter(&mut self, value: Counter)

Sets the value to follow.

Use this to manually control the progress to display by directly modifying the value pointed to by value.

source

pub fn set_color<C>(&mut self, color: C)
where C: Into<ColorType>,

Sets the color style.

The default color is PaletteColor::Highlight.

source

pub fn with_color<C>(self, color: C) -> ProgressBar
where C: Into<ColorType>,

Sets the color style.

Chainable variant of set_color.

Trait Implementations§

source§

impl Default for ProgressBar

source§

fn default() -> ProgressBar

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

impl View for ProgressBar

source§

fn draw(&self, printer: &Printer<'_, '_>)

Draws the view with the given printer (includes bounds) and focus. Read more
source§

fn layout(&mut self, _: XY<usize>)

Called once the size for this view has been decided. Read more
source§

fn needs_relayout(&self) -> bool

Should return true if the view content changed since the last call to layout(). Read more
source§

fn required_size(&mut self, constraint: XY<usize>) -> XY<usize>

Returns the minimum size the view requires with the given restrictions. Read more
source§

fn on_event(&mut self, _: Event) -> EventResult

Called when an event is received (key press, mouse event, …). Read more
source§

fn call_on_any( &mut self, _: &Selector<'_>, _: &mut dyn FnMut(&mut (dyn View + 'static)), )

Runs a closure on the view identified by the given selector. Read more
source§

fn focus_view(&mut self, _: &Selector<'_>) -> Result<EventResult, ViewNotFound>

Moves the focus to the view identified by the given selector. Read more
source§

fn take_focus(&mut self, source: Direction) -> Result<EventResult, CannotFocus>

Attempt to give this view the focus. Read more
source§

fn important_area(&self, view_size: XY<usize>) -> Rect

What part of the view is important and should be visible? Read more
source§

fn type_name(&self) -> &'static str

Returns the type of this view. Read more

Auto Trait Implementations§

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> AnyView for T
where T: View,

source§

fn as_any(&self) -> &(dyn Any + 'static)

Downcast self to a Any.

source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Downcast self to a mutable Any.

source§

fn as_boxed_any(self: Box<T>) -> Box<dyn Any>

Returns a boxed any from a boxed 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<T> Finder for T
where T: View,

source§

fn call_on_all<V, F>(&mut self, sel: &Selector<'_>, callback: F)
where V: View, F: FnMut(&mut V),

Runs a callback on all views identified by sel. Read more
source§

fn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R>
where V: View, F: FnOnce(&mut V) -> R,

Runs a callback on the view identified by sel. Read more
source§

fn call_on_name<V, F, R>(&mut self, name: &str, callback: F) -> Option<R>
where V: View, F: FnOnce(&mut V) -> R,

Convenient method to use call_on with a view::Selector::Name.
source§

fn find_name<V>(&mut self, name: &str) -> Option<ViewRef<V>>
where V: View,

Convenient method to find a view wrapped in an NamedView.
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> IntoBoxedView for T
where T: View,

source§

fn into_boxed_view(self) -> Box<dyn View>

Returns a Box<View>.
source§

impl<T> Nameable for T
where T: View,

source§

fn with_name<S>(self, name: S) -> NamedView<Self>
where S: Into<String>,

Wraps this view into an NamedView with the given id. Read more
source§

impl<T> Resizable for T
where T: View,

source§

fn resized( self, width: SizeConstraint, height: SizeConstraint, ) -> ResizedView<Self>

Wraps self in a ResizedView with the given size constraints.
source§

fn fixed_size<S>(self, size: S) -> ResizedView<Self>
where S: Into<XY<usize>>,

Wraps self into a fixed-size ResizedView.
source§

fn fixed_width(self, width: usize) -> ResizedView<Self>

Wraps self into a fixed-width ResizedView.
source§

fn fixed_height(self, height: usize) -> ResizedView<Self>

Wraps self into a fixed-width ResizedView.
source§

fn full_screen(self) -> ResizedView<Self>

Wraps self into a full-screen ResizedView.
source§

fn full_width(self) -> ResizedView<Self>

Wraps self into a full-width ResizedView.
source§

fn full_height(self) -> ResizedView<Self>

Wraps self into a full-height ResizedView.
source§

fn max_size<S>(self, size: S) -> ResizedView<Self>
where S: Into<XY<usize>>,

Wraps self into a limited-size ResizedView.
source§

fn max_width(self, max_width: usize) -> ResizedView<Self>

Wraps self into a limited-width ResizedView.
source§

fn max_height(self, max_height: usize) -> ResizedView<Self>

Wraps self into a limited-height ResizedView.
source§

fn min_size<S>(self, size: S) -> ResizedView<Self>
where S: Into<XY<usize>>,

Wraps self into a ResizedView at least sized size.
source§

fn min_width(self, min_width: usize) -> ResizedView<Self>

Wraps self in a ResizedView at least min_width wide.
source§

fn min_height(self, min_height: usize) -> ResizedView<Self>

Wraps self in a ResizedView at least min_height tall.
source§

impl<T> Scrollable for T
where T: View,

source§

fn scrollable(self) -> ScrollView<Self>

Wraps self in a ScrollView.
source§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.
source§

impl<T> With for T

source§

fn wrap_with<U, F>(self, f: F) -> U
where F: FnOnce(Self) -> U,

Calls the given closure and return the result. Read more
source§

fn with<F>(self, f: F) -> Self
where F: FnOnce(&mut Self),

Calls the given closure on self.
source§

fn try_with<E, F>(self, f: F) -> Result<Self, E>
where F: FnOnce(&mut Self) -> Result<(), E>,

Calls the given closure on self.
source§

fn with_if<F>(self, condition: bool, f: F) -> Self
where F: FnOnce(&mut Self),

Calls the given closure if condition == true.