mirror of
https://github.com/FliegendeWurst/cursive.git
synced 2024-11-08 18:30:40 +00:00
Add Scrollable trait
This commit is contained in:
parent
88fb6e7c54
commit
a47537ec2c
@ -2,7 +2,7 @@ extern crate cursive;
|
||||
|
||||
use cursive::align::HAlign;
|
||||
use cursive::traits::*;
|
||||
use cursive::views::{Dialog, DummyView, LinearLayout, ScrollView, TextView};
|
||||
use cursive::views::{Dialog, DummyView, LinearLayout, TextView};
|
||||
use cursive::Cursive;
|
||||
|
||||
// This example uses a LinearLayout to stick multiple views next to each other.
|
||||
@ -25,9 +25,9 @@ fn main() {
|
||||
// Disabling scrollable means the view cannot shrink.
|
||||
.child(TextView::new(text))
|
||||
// The other views will share the remaining space.
|
||||
.child(ScrollView::new(TextView::new(text)))
|
||||
.child(ScrollView::new(TextView::new(text)))
|
||||
.child(ScrollView::new(TextView::new(text)))
|
||||
.child(TextView::new(text).scrollable())
|
||||
.child(TextView::new(text).scrollable())
|
||||
.child(TextView::new(text).scrollable())
|
||||
.fixed_width(30),
|
||||
).button("Quit", |s| s.quit())
|
||||
.h_align(HAlign::Center),
|
||||
|
@ -1,7 +1,8 @@
|
||||
extern crate cursive;
|
||||
|
||||
use cursive::align::HAlign;
|
||||
use cursive::views::{Dialog, Panel, ScrollView, TextView};
|
||||
use cursive::view::Scrollable;
|
||||
use cursive::views::{Dialog, Panel, TextView};
|
||||
use cursive::Cursive;
|
||||
|
||||
fn main() {
|
||||
@ -16,7 +17,7 @@ fn main() {
|
||||
// The text is too long to fit on a line, so the view will wrap lines,
|
||||
// and will adapt to the terminal size.
|
||||
siv.add_fullscreen_layer(
|
||||
Dialog::around(Panel::new(ScrollView::new(TextView::new(content))))
|
||||
Dialog::around(Panel::new(TextView::new(content).scrollable()))
|
||||
.title("Unicode and wide-character support")
|
||||
// This is the alignment for the button
|
||||
.h_align(HAlign::Center)
|
||||
|
@ -1,7 +1,8 @@
|
||||
extern crate cursive;
|
||||
|
||||
use cursive::traits::Boxable;
|
||||
use cursive::views::{Button, Canvas, Dialog, LinearLayout, ScrollView};
|
||||
use cursive::view::Scrollable;
|
||||
use cursive::views::{Button, Canvas, Dialog, LinearLayout};
|
||||
use cursive::Printer;
|
||||
|
||||
fn main() {
|
||||
@ -9,18 +10,12 @@ fn main() {
|
||||
|
||||
siv.add_layer(
|
||||
Dialog::around(
|
||||
ScrollView::new(
|
||||
LinearLayout::vertical()
|
||||
.child(Button::new("Foo", |s| {
|
||||
s.add_layer(Dialog::info("Ah"))
|
||||
}))
|
||||
.child(
|
||||
Canvas::new(()).with_draw(draw).fixed_size((120, 40)),
|
||||
)
|
||||
.child(Button::new("Bar", |s| {
|
||||
s.add_layer(Dialog::info("Uh"))
|
||||
})),
|
||||
).scroll_x(true),
|
||||
LinearLayout::vertical()
|
||||
.child(Button::new("Foo", |s| s.add_layer(Dialog::info("Ah"))))
|
||||
.child(Canvas::new(()).with_draw(draw).fixed_size((120, 40)))
|
||||
.child(Button::new("Bar", |s| s.add_layer(Dialog::info("Uh"))))
|
||||
.scrollable()
|
||||
.scroll_x(true),
|
||||
).fixed_size((60, 30)),
|
||||
);
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
//! ```
|
||||
|
||||
#[doc(no_inline)]
|
||||
pub use view::{Boxable, Finder, Identifiable, View};
|
||||
pub use view::{Boxable, Finder, Identifiable, Scrollable, View};
|
||||
|
||||
#[doc(no_inline)]
|
||||
pub use With;
|
||||
|
@ -52,6 +52,7 @@ mod view_path;
|
||||
mod boxable;
|
||||
mod identifiable;
|
||||
mod scroll;
|
||||
mod scrollable;
|
||||
|
||||
mod into_boxed_view;
|
||||
|
||||
@ -63,6 +64,7 @@ pub use self::into_boxed_view::IntoBoxedView;
|
||||
pub use self::margins::Margins;
|
||||
pub use self::position::{Offset, Position};
|
||||
pub use self::scroll::{ScrollBase, ScrollStrategy};
|
||||
pub use self::scrollable::Scrollable;
|
||||
pub use self::size_cache::SizeCache;
|
||||
pub use self::size_constraint::SizeConstraint;
|
||||
pub use self::view::View;
|
||||
|
14
src/view/scrollable.rs
Normal file
14
src/view/scrollable.rs
Normal file
@ -0,0 +1,14 @@
|
||||
use view::View;
|
||||
use views::ScrollView;
|
||||
|
||||
/// Makes a view wrappable in a [`ScrollView`].
|
||||
///
|
||||
/// [`ScrollView`]: ::views::ScrollView
|
||||
pub trait Scrollable: View + Sized {
|
||||
/// Wraps `self` in a `ScrollView`.
|
||||
fn scrollable(self) -> ScrollView<Self> {
|
||||
ScrollView::new(self)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: View> Scrollable for T {}
|
Loading…
Reference in New Issue
Block a user