[−][src]Struct cursive::views::Canvas
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]
T: 'static + View,
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]
F: 'static + Fn(&T, &Printer),
Sets the closure for draw(&Printer)
.
pub fn with_draw<F>(self, f: F) -> Canvas<T> where
F: 'static + Fn(&T, &Printer),
[src]
F: 'static + Fn(&T, &Printer),
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]
F: 'static + FnMut(&mut T, Event) -> EventResult,
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]
F: 'static + FnMut(&mut T, Event) -> EventResult,
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]
F: 'static + FnMut(&mut T, XY<usize>) -> XY<usize>,
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]
F: 'static + FnMut(&mut T, XY<usize>) -> XY<usize>,
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]
F: 'static + FnMut(&mut T, XY<usize>),
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]
F: 'static + FnMut(&mut T, XY<usize>),
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]
F: 'static + FnMut(&mut T, Direction) -> bool,
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]
F: 'static + FnMut(&mut T, Direction) -> bool,
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]
F: 'static + Fn(&T) -> bool,
Sets the closure for needs_relayout()
.
pub fn with_needs_relayout<F>(self, f: F) -> Canvas<T> where
F: 'static + Fn(&T) -> bool,
[src]
F: 'static + Fn(&T) -> bool,
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]
F: 'static + for<'a> FnMut(&mut T, &Selector, &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)),
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]
F: 'static + for<'a> FnMut(&mut T, &Selector, &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)),
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]
F: 'static + Fn(&T, XY<usize>) -> Rect,
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]
F: 'static + Fn(&T, XY<usize>) -> Rect,
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]
F: 'static + FnMut(&mut T, &Selector) -> Result<(), ()>,
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]
F: 'static + FnMut(&mut T, &Selector) -> Result<(), ()>,
Sets the closure for focus_view()
.
Chainable variant.
Trait Implementations
impl<T> View for Canvas<T> where
T: 'static,
[src]
T: 'static,
fn draw(&self, printer: &Printer)
[src]
fn on_event(&mut self, event: Event) -> EventResult
[src]
fn required_size(&mut self, constraint: XY<usize>) -> XY<usize>
[src]
fn layout(&mut self, size: XY<usize>)
[src]
fn take_focus(&mut self, source: Direction) -> bool
[src]
fn needs_relayout(&self) -> bool
[src]
fn focus_view(&mut self, selector: &Selector) -> Result<(), ()>
[src]
fn important_area(&self, view_size: XY<usize>) -> Rect
[src]
fn call_on_any(
&mut self,
selector: &Selector,
cb: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
[src]
&mut self,
selector: &Selector,
cb: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
fn type_name(&self) -> &'static str
[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,
T: Unpin,
impl<T> !UnwindSafe for Canvas<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,
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
.
fn as_boxed_any(self: Box<T>) -> Box<dyn Any + 'static>
[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,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Erased for T
impl<T> Finder for T where
T: View,
[src]
T: View,
fn call_on<V, F, R>(&mut self, sel: &Selector, callback: F) -> Option<R> where
F: FnOnce(&mut V) -> R,
V: View,
[src]
F: FnOnce(&mut V) -> R,
V: View,
fn call_on_name<V, F, R>(&mut self, name: &str, callback: F) -> Option<R> where
F: FnOnce(&mut V) -> R,
V: View,
[src]
F: FnOnce(&mut V) -> R,
V: View,
fn call_on_id<V, F, R>(&mut self, id: &str, callback: F) -> Option<R> where
F: FnOnce(&mut V) -> R,
V: View,
[src]
F: FnOnce(&mut V) -> R,
V: View,
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,
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,
fn as_boxed_view(self) -> Box<dyn View + 'static>
[src]
impl<T> Nameable for T where
T: View,
[src]
T: View,
fn with_name<S>(self, name: S) -> NamedView<Self> where
S: Into<String>,
[src]
S: Into<String>,
fn with_id<S>(self, id: S) -> NamedView<Self> where
S: Into<String>,
[src]
S: Into<String>,
impl<T> Resizable for T where
T: View,
[src]
T: View,
fn boxed(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
[src]
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
fn resized(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
[src]
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
fn fixed_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
[src]
S: Into<XY<usize>>,
fn fixed_width(self, width: usize) -> ResizedView<Self>
[src]
fn fixed_height(self, height: usize) -> ResizedView<Self>
[src]
fn full_screen(self) -> ResizedView<Self>
[src]
fn full_width(self) -> ResizedView<Self>
[src]
fn full_height(self) -> ResizedView<Self>
[src]
fn max_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
[src]
S: Into<XY<usize>>,
fn max_width(self, max_width: usize) -> ResizedView<Self>
[src]
fn max_height(self, max_height: usize) -> ResizedView<Self>
[src]
fn min_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
[src]
S: Into<XY<usize>>,
fn min_width(self, min_width: usize) -> ResizedView<Self>
[src]
fn min_height(self, min_height: usize) -> ResizedView<Self>
[src]
impl<T> Scrollable for T where
T: View,
[src]
T: View,
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.
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.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> View for T where
T: ViewWrapper,
[src]
T: ViewWrapper,
fn draw(&self, printer: &Printer)
[src]
fn required_size(&mut self, req: XY<usize>) -> XY<usize>
[src]
fn on_event(&mut self, ch: Event) -> EventResult
[src]
fn layout(&mut self, size: XY<usize>)
[src]
fn take_focus(&mut self, source: Direction) -> bool
[src]
fn call_on_any(
&mut self,
selector: &Selector,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
[src]
&mut self,
selector: &Selector,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)