[][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::views::{Canvas, Dialog};
use cursive_core::event::{Event, EventResult, Key};
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<(), ()>, 
[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<(), ()>, 
[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>

impl<T> !Send for Canvas<T>

impl<T> !Sync for Canvas<T>

impl<T> Unpin for Canvas<T> where
    T: Unpin

impl<T> !UnwindSafe for Canvas<T>

Blanket Implementations

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

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

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

Downcast self to a Any.

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> View for T where
    T: ViewWrapper
[src]

impl<T> With for T[src]