[][src]Struct cursive::views::Canvas

pub struct Canvas<T> { /* fields omitted */ }

A blank view that forwards calls to closures.

You can use this view to easily draw your own interface.

Examples

use cursive_core::event::{Event, EventResult, Key};
use cursive_core::views::{Canvas, Dialog};
use unicode_width::UnicodeWidthStr; // To get the width of some text.

// Build a canvas around a string.
let state = String::new();
let canvas = Canvas::new(state)
    .with_draw(|text: &String, printer| {
        // Simply print our string
        printer.print((0, 0), text);
    })
    .with_on_event(|text: &mut String, event| match event {
        Event::Char(c) => {
            text.push(c);
            EventResult::Consumed(None)
        }
        Event::Key(Key::Enter) => {
            let text = text.clone();
            EventResult::with_cb(move |s| {
                s.add_layer(Dialog::info(&text));
            })
        }
        _ => EventResult::Ignored,
    })
    .with_required_size(|text, _constraints| (text.width(), 1).into());

Implementations

impl<T> Canvas<T> where
    T: 'static + View
[src]

pub fn wrap(view: T) -> Canvas<T>[src]

Creates a new Canvas around the given view.

By default, forwards all calls to the inner view.

impl<T> Canvas<T>[src]

pub fn new(state: T) -> Canvas<T>[src]

Creates a new, empty Canvas.

pub fn state_mut(&mut self) -> &mut T[src]

Gets a mutable reference to the inner state.

pub fn set_draw<F>(&mut self, f: F) where
    F: 'static + Fn(&T, &Printer<'_, '_>), 
[src]

Sets the closure for draw(&Printer).

pub fn with_draw<F>(self, f: F) -> Canvas<T> where
    F: 'static + Fn(&T, &Printer<'_, '_>), 
[src]

Sets the closure for draw(&Printer).

Chainable variant.

pub fn set_on_event<F>(&mut self, f: F) where
    F: 'static + FnMut(&mut T, Event) -> EventResult
[src]

Sets the closure for on_event(Event).

pub fn with_on_event<F>(self, f: F) -> Canvas<T> where
    F: 'static + FnMut(&mut T, Event) -> EventResult
[src]

Sets the closure for on_event(Event).

Chainable variant.

pub fn set_required_size<F>(&mut self, f: F) where
    F: 'static + FnMut(&mut T, XY<usize>) -> XY<usize>, 
[src]

Sets the closure for required_size(Vec2).

pub fn with_required_size<F>(self, f: F) -> Canvas<T> where
    F: 'static + FnMut(&mut T, XY<usize>) -> XY<usize>, 
[src]

Sets the closure for required_size(Vec2).

Chainable variant.

pub fn set_layout<F>(&mut self, f: F) where
    F: 'static + FnMut(&mut T, XY<usize>), 
[src]

Sets the closure for layout(Vec2).

pub fn with_layout<F>(self, f: F) -> Canvas<T> where
    F: 'static + FnMut(&mut T, XY<usize>), 
[src]

Sets the closure for layout(Vec2).

Chainable variant.

pub fn set_take_focus<F>(&mut self, f: F) where
    F: 'static + FnMut(&mut T, Direction) -> bool
[src]

Sets the closure for take_focus(Direction).

pub fn with_take_focus<F>(self, f: F) -> Canvas<T> where
    F: 'static + FnMut(&mut T, Direction) -> bool
[src]

Sets the closure for take_focus(Direction).

Chainable variant.

pub fn set_needs_relayout<F>(&mut self, f: F) where
    F: 'static + Fn(&T) -> bool
[src]

Sets the closure for needs_relayout().

pub fn with_needs_relayout<F>(self, f: F) -> Canvas<T> where
    F: 'static + Fn(&T) -> bool
[src]

Sets the closure for needs_relayout().

Chainable variant.

pub fn set_call_on_any<F>(&mut self, f: F) where
    F: 'static + for<'a> FnMut(&mut T, &Selector<'_>, &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)), 
[src]

Sets the closure for call_on_any().

pub fn with_call_on_any<F>(self, f: F) -> Canvas<T> where
    F: 'static + for<'a> FnMut(&mut T, &Selector<'_>, &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)), 
[src]

Sets the closure for call_on_any().

Chainable variant.

pub fn set_important_area<F>(&mut self, f: F) where
    F: 'static + Fn(&T, XY<usize>) -> Rect
[src]

Sets the closure for important_area().

pub fn with_important_area<F>(self, f: F) -> Canvas<T> where
    F: 'static + Fn(&T, XY<usize>) -> Rect
[src]

Sets the closure for important_area().

Chainable variant.

pub fn set_focus_view<F>(&mut self, f: F) where
    F: 'static + FnMut(&mut T, &Selector<'_>) -> Result<(), ViewNotFound>, 
[src]

Sets the closure for focus_view().

pub fn with_focus_view<F>(self, f: F) -> Canvas<T> where
    F: 'static + FnMut(&mut T, &Selector<'_>) -> Result<(), ViewNotFound>, 
[src]

Sets the closure for focus_view().

Chainable variant.

Trait Implementations

impl<T> View for Canvas<T> where
    T: 'static, 
[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for Canvas<T>[src]

impl<T> !Send for Canvas<T>[src]

impl<T> !Sync for Canvas<T>[src]

impl<T> Unpin for Canvas<T> where
    T: Unpin
[src]

impl<T> !UnwindSafe for Canvas<T>[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> AnyView for T where
    T: View
[src]

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.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Erased for T

impl<T> Finder for T where
    T: View
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> IntoBoxedView for T where
    T: View
[src]

impl<T> Nameable for T where
    T: View
[src]

impl<T> Resizable for T where
    T: View
[src]

impl<T> Scrollable for T where
    T: View
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> With for T[src]