Struct cursive_async_view::AsyncProgressView [−][src]
An AsyncProgressView is a wrapper view that displays a progress bar, until the
child view is successfully created or an error in the creation progress occured.
To achieve this a poll_ready callback is passed in the creation of AsyncProgressView which
returns an AsyncProgressState that can indicate that the process is still Pending (this contains a float
between 0 and 1, communicating the progress, this information is displayed in the bar), has been successfully
completed Available containing the view to be displayed, or if the creation has thrown an Error
containing a message to be shown to the user.
The poll_ready callback should only check for data to be
available and create the child view when the data got available. It must
never block until the data is available or do heavy calculations!
Otherwise cursive cannot proceed displaying and your
application will have a blocking loading process!
If you have troubles and need some more in-depth examples have a look at the provided examples in the project.
Example usage
use cursive::{views::TextView, Cursive, CursiveExt}; use cursive_async_view::{AsyncProgressView, AsyncProgressState}; let mut siv = Cursive::default(); let start = std::time::Instant::now(); let async_view = AsyncProgressView::new(&mut siv, move || { if start.elapsed().as_secs() < 3 { AsyncProgressState::Pending(start.elapsed().as_secs() as f32 / 3f32) } else { AsyncProgressState::Available(TextView::new("Finally it loaded!")) } }); siv.add_layer(async_view); // siv.run();
Implementations
impl<T: View> AsyncProgressView<T>[src]
pub fn new<F>(siv: &mut Cursive, creator: F) -> Self where
F: FnMut() -> AsyncProgressState<T> + 'static, [src]
F: FnMut() -> AsyncProgressState<T> + 'static,
Create a new AsyncProgressView instance. The cursive reference is only used to
update the screen when a progress update is received. In order to show the view,
it has to be directly or indirectly added to a cursive layer like any other view.
The creator function will be executed on a dedicated thread in the background. Make sure that this function will never block indefinitely. Otherwise, the creation thread will get stuck.
pub fn with_width(self, width: usize) -> Self[src]
Mark the maximum allowed width in characters, the progress bar may consume. By default, the width will be inherited by the parent view.
pub fn with_height(self, height: usize) -> Self[src]
Mark the maximum allowed height in characters, the progress bar may consume. By default, the height will be inherited by the parent view.
pub fn with_progress_fn<F>(self, progress_fn: F) -> Self where
F: Fn(usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static, [src]
F: Fn(usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static,
Set a custom progress function for this view, indicating the progress of the
wrapped view creation. See the default_progress function reference for an
example on how to create a custom progress function.
pub fn with_error_fn<F>(self, error_fn: F) -> Self where
F: Fn(String, usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static, [src]
F: Fn(String, usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static,
pub fn set_width(&mut self, width: usize)[src]
Set the maximum allowed width in characters, the progress bar may consume.
pub fn set_height(&mut self, height: usize)[src]
Set the maximum allowed height in characters, the progress bar may consume.
pub fn set_progress_fn<F>(&mut self, progress_fn: F) where
F: Fn(usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static, [src]
F: Fn(usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static,
Set a custom progress function for this view, indicating the progress of the
wrapped view creation. See the default_progress function reference for an
example on how to create a custom progress function.
The function may be set at any time. The progress bar can be changed even if the previous progress bar has already be drawn.
pub fn set_error_fn<F>(&mut self, error_fn: F) where
F: Fn(String, usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static, [src]
F: Fn(String, usize, usize, f32, usize, usize) -> AnimationProgressFrame + 'static,
Set a custom error function for this view, indicating that an error occured during the
wrapped view creation. See the default_progress_error function reference for an
example on how to create a custom error function.
The function may be set at any time. The progress bar can be changed even if the previous progress bar has already be drawn.
pub fn inherit_width(&mut self)[src]
Make the progress bar inherit its width from the parent view. This is the default.
pub fn inherit_height(&mut self)[src]
Make the progress bar inherit its height from the parent view. This is the default.
Trait Implementations
impl<T: View> Drop for AsyncProgressView<T>[src]
impl<T: View + Sized> View for AsyncProgressView<T>[src]
fn draw(&self, printer: &Printer<'_, '_>)[src]
fn layout(&mut self, vec: Vec2)[src]
fn needs_relayout(&self) -> bool[src]
fn required_size(&mut self, constraint: Vec2) -> Vec2[src]
fn on_event(&mut self, ev: Event) -> EventResult[src]
fn call_on_any<'a>(&mut self, sel: &Selector<'_>, cb: AnyCb<'a>)[src]
fn focus_view(&mut self, sel: &Selector<'_>) -> Result<(), ViewNotFound>[src]
fn take_focus(&mut self, source: Direction) -> bool[src]
fn important_area(&self, view_size: Vec2) -> Rect[src]
pub fn type_name(&self) -> &'static str[src]
Auto Trait Implementations
impl<T> !RefUnwindSafe for AsyncProgressView<T>
impl<T> !Send for AsyncProgressView<T>
impl<T> !Sync for AsyncProgressView<T>
impl<T> Unpin for AsyncProgressView<T> where
T: Unpin,
T: Unpin,
impl<T> !UnwindSafe for AsyncProgressView<T>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> AnyView for T where
T: View, [src]
T: View,
pub fn as_any(&self) -> &(dyn Any + 'static)[src]
Downcast self to a Any.
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)[src]
Downcast self to a mutable Any.
pub fn as_boxed_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>[src]
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Erased for T
impl<T> Finder for T where
T: View, [src]
T: View,
pub fn call_on_all<V, F>(&mut self, sel: &Selector<'_>, callback: F) where
V: View,
F: FnMut(&mut V), [src]
V: View,
F: FnMut(&mut V),
pub fn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R> where
V: View,
F: FnOnce(&mut V) -> R, [src]
V: View,
F: FnOnce(&mut V) -> R,
pub fn call_on_name<V, F, R>(&mut self, name: &str, callback: F) -> Option<R> where
V: View,
F: FnOnce(&mut V) -> R, [src]
V: View,
F: FnOnce(&mut V) -> R,
pub fn call_on_id<V, F, R>(&mut self, id: &str, callback: F) -> Option<R> where
V: View,
F: FnOnce(&mut V) -> R, [src]
V: View,
F: FnOnce(&mut V) -> R,
pub fn find_name<V>(
&mut self,
name: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View, [src]
&mut self,
name: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View,
pub fn find_id<V>(
&mut self,
id: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View, [src]
&mut self,
id: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View,
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> IntoBoxedView for T where
T: View, [src]
T: View,
pub fn into_boxed_view(self) -> Box<dyn View + 'static, Global>[src]
impl<T> Nameable for T where
T: View, [src]
T: View,
pub fn with_name<S>(self, name: S) -> NamedView<Self> where
S: Into<String>, [src]
S: Into<String>,
pub fn with_id<S>(self, id: S) -> NamedView<Self> where
S: Into<String>, [src]
S: Into<String>,
impl<T> Pointable for T
pub const ALIGN: usize
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
pub unsafe fn drop(ptr: usize)
impl<T> Resizable for T where
T: View, [src]
T: View,
pub fn boxed(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>[src]
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
pub fn resized(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>[src]
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
pub fn fixed_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>, [src]
S: Into<XY<usize>>,
pub fn fixed_width(self, width: usize) -> ResizedView<Self>[src]
pub fn fixed_height(self, height: usize) -> ResizedView<Self>[src]
pub fn full_screen(self) -> ResizedView<Self>[src]
pub fn full_width(self) -> ResizedView<Self>[src]
pub fn full_height(self) -> ResizedView<Self>[src]
pub fn max_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>, [src]
S: Into<XY<usize>>,
pub fn max_width(self, max_width: usize) -> ResizedView<Self>[src]
pub fn max_height(self, max_height: usize) -> ResizedView<Self>[src]
pub fn min_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>, [src]
S: Into<XY<usize>>,
pub fn min_width(self, min_width: usize) -> ResizedView<Self>[src]
pub fn min_height(self, min_height: usize) -> ResizedView<Self>[src]
impl<T> Scrollable for T where
T: View, [src]
T: View,
pub fn scrollable(self) -> ScrollView<Self>[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T> With for T[src]
pub fn wrap_with<U, F>(self, f: F) -> U where
F: FnOnce(Self) -> U, [src]
F: FnOnce(Self) -> U,
pub fn with<F>(self, f: F) -> Self where
F: FnOnce(&mut Self), [src]
F: FnOnce(&mut Self),
pub fn try_with<E, F>(self, f: F) -> Result<Self, E> where
F: FnOnce(&mut Self) -> Result<(), E>, [src]
F: FnOnce(&mut Self) -> Result<(), E>,
pub fn with_if<F>(self, condition: bool, f: F) -> Self where
F: FnOnce(&mut Self), [src]
F: FnOnce(&mut Self),