mirror of
https://github.com/FliegendeWurst/cursive.git
synced 2024-11-24 01:46:31 +00:00
Add examples to documentation
This commit is contained in:
parent
536321ebda
commit
0a8228d073
@ -10,8 +10,16 @@ use event::*;
|
|||||||
use Printer;
|
use Printer;
|
||||||
use unicode_width::UnicodeWidthStr;
|
use unicode_width::UnicodeWidthStr;
|
||||||
|
|
||||||
/// Simple text label with a callback when ENTER is pressed.
|
/// Simple text label with a callback when <Enter> is pressed.
|
||||||
|
///
|
||||||
/// A button shows its content in a single line and has a fixed size.
|
/// A button shows its content in a single line and has a fixed size.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// # use cursive::prelude::*;
|
||||||
|
/// let quit_button = Button::new("Quit", |s| s.quit());
|
||||||
|
/// ```
|
||||||
pub struct Button {
|
pub struct Button {
|
||||||
label: String,
|
label: String,
|
||||||
callback: Callback,
|
callback: Callback,
|
||||||
|
@ -11,6 +11,42 @@ use Printer;
|
|||||||
|
|
||||||
|
|
||||||
/// Input box where the user can enter and edit text.
|
/// Input box where the user can enter and edit text.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// From the [edit example].
|
||||||
|
///
|
||||||
|
/// [edit example]: https://github.com/gyscos/Cursive/blob/master/examples/edit.rs
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// # extern crate cursive;
|
||||||
|
/// # use cursive::prelude::*;
|
||||||
|
/// # fn main() {
|
||||||
|
/// let mut siv = Cursive::new();
|
||||||
|
///
|
||||||
|
/// // Create a dialog with an edit text and a button.
|
||||||
|
/// siv.add_layer(Dialog::new(EditView::new().min_length(20).with_id("edit"))
|
||||||
|
/// .padding((1, 1, 1, 0))
|
||||||
|
/// .title("Enter your name")
|
||||||
|
/// .button("Ok", |s| {
|
||||||
|
/// // When the button is clicked,
|
||||||
|
/// // read the text and print it in a new dialog.
|
||||||
|
/// let name = s.find_id::<EditView>("edit")
|
||||||
|
/// .unwrap()
|
||||||
|
/// .get_content()
|
||||||
|
/// .to_string();
|
||||||
|
/// if name.is_empty() {
|
||||||
|
/// s.add_layer(Dialog::new(TextView::new("Please enter a name!"))
|
||||||
|
/// .dismiss_button("Ok"));
|
||||||
|
/// } else {
|
||||||
|
/// let content = format!("Hello {}!", name);
|
||||||
|
/// s.pop_layer();
|
||||||
|
/// s.add_layer(Dialog::new(TextView::new(&content))
|
||||||
|
/// .button("Quit", |s| s.quit()));
|
||||||
|
/// }
|
||||||
|
/// }));
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
pub struct EditView {
|
pub struct EditView {
|
||||||
/// Current content.
|
/// Current content.
|
||||||
content: String,
|
content: String,
|
||||||
|
@ -3,6 +3,13 @@ use direction::Orientation;
|
|||||||
use vec::Vec2;
|
use vec::Vec2;
|
||||||
|
|
||||||
/// Simple wrapper view that asks for all the space it can get.
|
/// Simple wrapper view that asks for all the space it can get.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// # use cursive::prelude::*;
|
||||||
|
/// let view = FullView::new(TextView::new("Big box for little text!"));
|
||||||
|
/// ```
|
||||||
pub struct FullView<T: View> {
|
pub struct FullView<T: View> {
|
||||||
view: T,
|
view: T,
|
||||||
orientation: Option<Orientation>,
|
orientation: Option<Orientation>,
|
||||||
|
@ -7,7 +7,16 @@ use super::{View, ViewWrapper};
|
|||||||
|
|
||||||
/// A simple wrapper view that catches some ignored event from its child.
|
/// A simple wrapper view that catches some ignored event from its child.
|
||||||
///
|
///
|
||||||
/// Events ignored by its child without a callback will stay ignored.
|
/// If the event doesn't have a corresponding callback, it will stay ignored.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// # use cursive::prelude::*;
|
||||||
|
/// let view = KeyEventView::new(TextView::new("This view has an event!"))
|
||||||
|
/// .register('q', |s| s.quit())
|
||||||
|
/// .register(Key::Esc, |s| s.quit());
|
||||||
|
/// ```
|
||||||
pub struct KeyEventView {
|
pub struct KeyEventView {
|
||||||
content: Box<View>,
|
content: Box<View>,
|
||||||
callbacks: HashMap<Event, Callback>,
|
callbacks: HashMap<Event, Callback>,
|
||||||
|
@ -157,7 +157,9 @@ pub trait View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Cache around a one-dimensional layout result
|
/// Cache around a one-dimensional layout result.
|
||||||
|
///
|
||||||
|
/// This is not a View, but something to help you if you create your own Views.
|
||||||
#[derive(PartialEq, Debug, Clone, Copy)]
|
#[derive(PartialEq, Debug, Clone, Copy)]
|
||||||
pub struct SizeCache {
|
pub struct SizeCache {
|
||||||
/// Cached value
|
/// Cached value
|
||||||
|
@ -5,6 +5,9 @@ use vec::Vec2;
|
|||||||
use Printer;
|
use Printer;
|
||||||
|
|
||||||
/// Provide scrolling functionalities to a view.
|
/// Provide scrolling functionalities to a view.
|
||||||
|
///
|
||||||
|
/// You're not supposed to use this directly,
|
||||||
|
/// but it can be helpful if you create your own Views.
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct ScrollBase {
|
pub struct ScrollBase {
|
||||||
/// First line visible
|
/// First line visible
|
||||||
|
@ -35,6 +35,32 @@ impl<T> Item<T> {
|
|||||||
/// View to select an item among a list.
|
/// View to select an item among a list.
|
||||||
///
|
///
|
||||||
/// It contains a list of values of type T, with associated labels.
|
/// It contains a list of values of type T, with associated labels.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// # extern crate cursive;
|
||||||
|
/// # use cursive::prelude::*;
|
||||||
|
/// # use cursive::align::HAlign;
|
||||||
|
/// # fn main() {
|
||||||
|
/// let mut time_select = SelectView::new().h_align(HAlign::Center);
|
||||||
|
/// time_select.add_item("Short", 1);
|
||||||
|
/// time_select.add_item("Medium", 5);
|
||||||
|
/// time_select.add_item("Long", 10);
|
||||||
|
///
|
||||||
|
/// time_select.set_on_select(|s, time| {
|
||||||
|
/// s.pop_layer();
|
||||||
|
/// let text = format!("You will wait for {} minutes...", time);
|
||||||
|
/// s.add_layer(Dialog::new(TextView::new(&text))
|
||||||
|
/// .button("Quit", |s| s.quit()));
|
||||||
|
/// });
|
||||||
|
///
|
||||||
|
/// let mut siv = Cursive::new();
|
||||||
|
/// siv.add_layer(Dialog::new(time_select)
|
||||||
|
/// .title("How long is your wait?"));
|
||||||
|
/// # }
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
pub struct SelectView<T = String> {
|
pub struct SelectView<T = String> {
|
||||||
items: Vec<Item<T>>,
|
items: Vec<Item<T>>,
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
|
Loading…
Reference in New Issue
Block a user